[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 02/01 06:17 / Filesize : 260 KB / Number-of Response : 964
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

VBプログラマ質問スレ(Ver.6.0 まで) part57



1 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 01:50:27.76 ]
ここは Visual Basic 〜6.0 の質問スレです。
質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、
「何がしたくて、どうしたけど、どう困っているのか」を明確に書きましょう。

VB.NETは別物なので専門スレで、VBA、APIの質問もそれぞれのスレで。

○ 質問者の心得
 一.質問する前にMSDNやGoogle、過去ログにも目を通してみる。
 二.VBScript、インストーラーなどはこのスレでOK。
 三.質問は第三者にもわかりやすいよう簡潔かつ具体的に。
 四.荒らしは相手しない。

○ 回答者の心得
 一.答えられない質問は無駄に罵倒せずスルー。無理するな。
 二.代用法を強制しない。
 三.回答する上で必須ではない情報をむやみに聞き返さない。
 四.荒らしは相手しない。
 五.VB情報募集中。
 六.回答は質問者が理解できるよう具体的に。

MSDN Online Japan ホーム
 www.microsoft.com/japan/msdn/default.asp
Visual Studio 6.0 Service Pack 6
 msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp6/default.aspx
Google
 www.google.co.jp/

※「まず自分で調べる」クセを身につけよう。

331 名前:327 mailto:sage [2011/07/04(月) 22:59:04.79 ]
馬鹿っぽくて悪かったな。

332 名前:デフォルトの名無しさん mailto:sage [2011/07/05(火) 03:16:49.63 ]
エスパーか

333 名前:デフォルトの名無しさん mailto:sage [2011/07/06(水) 13:05:43.46 ]
LE使いってどれくらいいる?

334 名前:デフォルトの名無しさん [2011/07/06(水) 18:53:51.59 ]
>>327
やっぱり、メモリリークとかでしょうね、VBの
Lineメソッドでエラーにはなるけど、決まったコードで出るわけではないし
ある特定のプロジェクトで出るわけでもないので詳細は書きようもないですが
プログラムがある程度大きい場合に、たまに発生するようです
再現したらキャプろうと思ったけど期待すると出てこない・・

335 名前:327 mailto:sage [2011/07/06(水) 23:13:20.19 ]
>>334
エラー画面をキャプチャーしても原因はそこでは無いだろうから、
途中経過をモニタリングすべきだと思います。
(メモリの消費状況、インスタンスの開放、配列のErase等々)

どうみてもプログラムに間違いが無さそうならば、
Service Packが最新になっているか確認してみてはどうでしょう?


336 名前:デフォルトの名無しさん mailto:sage [2011/07/06(水) 23:15:05.01 ]
環境を疑う前にコードを疑えって。
ダメな奴ほど環境を疑う。

337 名前:デフォルトの名無しさん mailto:sage [2011/07/07(木) 00:13:49.97 ]
それほど対してソースコードは無いんですが実行速度が遅くて困っています
現状フォーム内にメソッドを記述して全ての処理を動かしているのですが
クラスに書き込めば速度向上が望めるでしょうか
それとも実行速度ってコード量に比例するってだけなのですか

教えてください。

338 名前:デフォルトの名無しさん mailto:sage [2011/07/07(木) 00:36:33.41 ]
LE使いなのでよう知らんがコンパイルスイッチとかいうので実行速度を最適化とかいうの使えばいいとちゃうのん?LEそういう機能がないので全くわからないが。ただの独り言です。

339 名前:デフォルトの名無しさん mailto:sage [2011/07/07(木) 00:39:22.99 ]
>>337

>クラスに書き込めば速度向上が望めるでしょうか
望めない。理論的にはクラス生成と呼び出しの分遅くなる

>それとも実行速度ってコード量に比例するってだけなのですか
いいえ
起動にかかる時間はコード量(厳密にはコンパイル後のサイズ)に影響されます
起動後の実行速度には関係ありません



340 名前:デフォルトの名無しさん mailto:sage [2011/07/07(木) 00:46:51.19 ]
コンパイルスイッチってvbにありましたっけ??
C言語とかだとコンパイラーが持ってたりしますけど・・・

341 名前:327 mailto:sage [2011/07/07(木) 08:26:20.69 ]
>>337
どのような処理なのか分からないと高速化もアドバイスしにくいですが、
一般的にはAPIの使用、キャッシュ、バッファリング、アルゴリズムの最適化
といったところでしょうか。

フォーム内にコードが大量にあるとすると、ロードに時間が掛かる可能性はあります。

>>340
オプション画面から指定できます。
VB5からネイティブコンパイル可能になったからです。

IDEからの動作ですと、インタプリタ(のような)動作ですので、効かないと思います。


342 名前:デフォルトの名無しさん mailto:sage [2011/07/07(木) 16:54:10.83 ]
自分で契約しているサーバの負荷等を調べるものを作っているのですが、
8つ契約しているので、下記のコードで1個1個順番に行っていると遅いので、
マルチスレッド?で行いたいのですが、下記の事をマルチスレッドで同時に
行うにはどのようにすればよいのでしょうか?
(下のソースも部分的にサンプルサイト等を見て書いたものなので、自分は
 ほとんど始めたばかりな感じで、マルチスレッドの基本についても全く分かりません。)

Windows XP SP3 + VB6 SP6を使っています。
もし、やり方が分かる方いましたら教えていただけるとありがたいです。



343 名前:342 ◆XuL15E5UEM mailto:sage [2011/07/07(木) 16:55:28.31 ]
Private Sub Server_Check(ByVal MyServer As String, ByVal MyNumber As Integer, ByVal CPU As String)
On Err GoTo Err
'
If MyServer = "" Then Exit Sub
'サーバーチェックを実行
If MyCounter = 1 Then
Set objIE = CreateObject("InternetExplorer.Application")
End If
  '
With objIE
.Navigate "http://" & MyServer & ".example.com/cgi/check.php"
Do Until ((.Busy = False) And (.ReadyState = READYSTATE_COMPLETE))
Loop
End With
' 必要な変数を宣言する
Dim stCsvData As String
'エラー
If objIE.Document.All(0).InnerHTML = "" Then GoTo Err
If InStr(objIE.Document.All(0).InnerHTML, "404 Not Found") <> 0 Then GoTo Err

344 名前:342 ◆XuL15E5UEM mailto:sage [2011/07/07(木) 16:55:48.77 ]
'データ取得
stCsvData = objIE.Document.getElementById("status").InnerHTML
' カンマ区切りで分割して配列に格納する
Dim stArrayData() As String
stArrayData = Split(stCsvData, ",")
'
ReDim Preserve stArrayData(UBound(stArrayData()) + 1)
stArrayData(13) = CPU
' データを確認する
Dim i As Integer
For i = 0 To UBound(stArrayData())
MSHFlexGrid1.TextMatrix(MyNumber, i + 1) = stArrayData(i)
Next i
'
If MyCounter = 8 Then
objIE.Quit
Set objIE = Nothing
End If
Exit Sub
Err:
If MyCounter = 8 Then
objIE.Quit
Set objIE = Nothing
End If
End Sub

以上です、よろしくお願いします。

345 名前:デフォルトの名無しさん mailto:sage [2011/07/07(木) 17:58:47.53 ]
まて・・・VB6でマルチスレッドはAPI使えばいけるが
確かやばかった記憶が・・・・

どうせなら同じプログラム8つ動かしてマルチプロセス
とかどうよ?w

346 名前:デフォルトの名無しさん mailto:sage [2011/07/07(木) 20:52:56.96 ]
VB6はシングルスレッドじゃないのか

347 名前:327 mailto:sage [2011/07/07(木) 23:21:24.06 ]
>>342
マルチスレッドにするにせよ、プロセスを分けるにせよ、
このプログラムのようなIEのインスタンスが一つしか
作成されないような構造では、上手く行かないでしょう。

まず、IEのインスタンスが8個作成されるように改造してください。
(それ自体が不可能な場合はsocketを使用するなどして、
かなりの部分を自作する必要があるので、かなり難しいかと)

IEのインスタンスが複数作成できたならば、問題は
Do Untilでのブロック動作だと思うので、DoEventsと
タイマーコントロールで問題回避できると思います。

あと、余計なお世話だとは思いますが、動かす際には
無用なリクエストが大量発行されないように注意してください。
意図せずにDoS攻撃になってしまう可能性があります。


348 名前:342 ◆XuL15E5UEM mailto:sage [2011/07/08(金) 01:11:18.20 ]
>>347
レスありがとうございます。

IEの部分は8個作成してもOKです。

>IEのインスタンスが複数作成できたならば、問題は
>Do Untilでのブロック動作だと思うので、DoEventsと
>タイマーコントロールで問題回避できると思います。
この部分はどのようにすればよいか、もしよろしければサンプルをお願いできませんでしょうか。

動かす際には、まず自鯖で試しています。
お気づかいありがとうございます。


349 名前:デフォルトの名無しさん mailto:sage [2011/07/08(金) 05:04:31.46 ]
>>345
VBのランタイム関数がスレッドセーフである事を保証しないので使えないのと関数を使えないのと、
IDEのインタプリタ上で動かしているとクラッシュするだけで、
大きな問題は無いよ。



350 名前:デフォルトの名無しさん mailto:sage [2011/07/08(金) 09:32:46.33 ]
>>349
あと、たしか実行ファイルがPコードコンパイルじゃなかったら不具合がおきたと思うんだが。

351 名前:327 mailto:sage [2011/07/09(土) 01:00:28.84 ]
>>342
サンプル作ろうと思ったら、環境(と、ついでに時間)がありませんでした。
ゴメンナサイ。
一週間ぐらい待てるならば作りますので、言ってください。

とりあえず、大まかな話を。

恐らく目的を達成するにはタイマーコントロールを使用してタイムスライス
っぽいことを実装するのが一番手っ取り早いと思います。

現在、Do Untilで行っている動作は完全に処理をブロックしてしまっていて
他に何もできなくなっているので、その部分をタイマーコントロールを
使用して一定周期で監視するように改造するのです。
その際、タイマーコントロールのルーチン内で1〜8までのサーバの
状態を順番に監視するようにします。

イメージはこんな感じ↓。



352 名前:327 mailto:sage [2011/07/09(土) 01:01:08.37 ]
private sub timer1_timer()

select case(server)
case server1
if ((ie1.Busy = False) And (ie1.ReadyState = READYSTATE_COMPLETE))then
server1flag=true
end if
server=server2

case server8
if ((ie8.Busy = False) And (ie8.ReadyState = READYSTATE_COMPLETE))then
server8flag=true
end if
server=server1

end select

if server1flag and … and server1flag then
timer1.enabled=false
end if

end sub

伝わりますかね…?


353 名前:デフォルトの名無しさん mailto:sage [2011/07/09(土) 01:07:07.92 ]
While Flag
 DoEvents
Wend

354 名前:デフォルトの名無しさん mailto:sage [2011/07/09(土) 04:16:37.55 ]
今から勉強して新規でプログラム作るなら、.NETでやった方がいいと思うんだが...

355 名前:342 ◆XuL15E5UEM mailto:sage [2011/07/09(土) 11:52:45.74 ]
>>351
お忙しいところレスどうもありがとうございます。
時間は1ヵ月でも半年、1年でも待ちます。

351自体は説明内容(単語)が分からずさっぱりなのですが、
352で書いていただいたコードを眺めつつ単語も調べて試して
みたいと思います。(今の段階だとさっぱりなもので・・・。)


>>354
れすども!?
なんとなくVB6の方が操作感?というか分かりやすい気がしたもので。

356 名前:デフォルトの名無しさん mailto:sage [2011/07/09(土) 11:56:17.52 ]
VB6はもう開発終了
メンテナンスもされない。
新しいOSで動作保証がなくなるかもしれない。

自分専用のツールを作って公開しないというのなら
別に構わないが、将来自信作ができたとき、
VB6で作っていると、作り直すはめになるだけ。


357 名前:デフォルトの名無しさん mailto:sage [2011/07/09(土) 11:58:31.05 ]
というか、そもそも、
サーバーの負荷を調べる程度で、
IEを起動しているのがそもそもの間違い。

IEを起動・・・= CreateObject("InternetExplorer.Application") の部分

重いのがいやならマルチスレッドうんぬんではなく
IEを起動しないようにするのが正解。

358 名前:デフォルトの名無しさん mailto:sage [2011/07/09(土) 12:55:42.79 ]
よくわかんねーけどサーバのステータスがhtmlで取得できるならGETして中身見るだけですむよね

359 名前:デフォルトの名無しさん [2011/07/09(土) 13:40:11.88 ]
回線の負荷か
CPUの負荷ならレジストリ見ればいいらしいが



360 名前:デフォルトの名無しさん mailto:sage [2011/07/09(土) 16:28:24.52 ]
馬鹿ばっか

361 名前:デフォルトの名無しさん mailto:sage [2011/07/09(土) 20:24:18.66 ]
「バカ」と罵る奴は何がしたいのか分からんな


362 名前:デフォルトの名無しさん mailto:sage [2011/07/09(土) 21:07:44.98 ]
バカにはわからんよ。

363 名前:デフォルトの名無しさん mailto:sage [2011/07/10(日) 17:27:47.56 ]
>VB6はもう開発終了
NETも汎用性がなさそうだしな

364 名前:デフォルトの名無しさん mailto:sage [2011/07/10(日) 18:15:51.91 ]
未だにVB6製のソフトウェア使ってる企業は何で

365 名前:デフォルトの名無しさん [2011/07/10(日) 18:48:15.42 ]
バカは自分が理解できないと人をバカという転位行動をとるよ

366 名前:sage [2011/07/14(木) 23:02:07.01 ]
テキストボックスにあるカンマで区切られたデータ(CSVデータ)があって
データを逆順に「りんご,ごりら,らっぱ」→「らっぱ,ごりら,りんご」と
途中まではデータが通りここが通ってない
ReDim Preserve data(i + 1)
Array.Reverse(data)
TextBox1.Text = ""
For j = 0 To i + 1
TextBox1.Text &= data(j) & ","
Next
とするのですが動きません。ご教授お願いいたします。

367 名前:デフォルトの名無しさん mailto:sage [2011/07/14(木) 23:03:26.62 ]
すいません上げてしまいました

368 名前:327 mailto:sage [2011/07/15(金) 02:41:19.28 ]
>>366
TextBox1.Text &= data(j) & ","

TextBox1.Text = TextBox1.Text & data(j) & ","


369 名前:デフォルトの名無しさん mailto:sage [2011/07/15(金) 09:47:28.63 ]
>Array.Reverse(data)
こんなのVB6にあったっけ?
.netならわかるが・・・

手抜きだと
Private Sub Command1_Click()

Dim text As String
text = "ごりら,りんご,らっぱ"

Dim arr() As String
arr = Split(text, ",")

Dim i As Long

Dim changedText As String

For i = UBound(arr) To LBound(arr) Step -1
changedText = changedText & arr(i) & vbCrLf
Next

MsgBox (changedText)

End Sub



370 名前:デフォルトの名無しさん mailto:sage [2011/07/15(金) 10:06:09.68 ]
>>366
そもそも配列をいちいち逆順にソートし直す必要があるのかね?
For を後ろから-1してくればいいのだとおもうが

371 名前:デフォルトの名無しさん mailto:sage [2011/07/15(金) 22:47:25.91 ]
>>368-370
ありがとうございました。スレ違いだったみたいです
丁寧なご教授ありがとうございます

372 名前:デフォルトの名無しさん mailto:sage [2011/07/15(金) 23:16:24.06 ]
>質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、

これを徹底させず答えるから

373 名前:デフォルトの名無しさん mailto:sage [2011/07/22(金) 16:16:59.87 ]
保守

374 名前:デフォルトの名無しさん [2011/07/29(金) 11:58:12.94 ]
保守2


375 名前:デフォルトの名無しさん mailto:sage [2011/07/29(金) 13:50:46.57 ]
保守なんぞしなくても、この板では落ちないだろ

376 名前:デフォルトの名無しさん mailto:sage [2011/07/31(日) 15:34:56.75 ]
hibari.2ch.net/news4vip/subject.txt
を取得して動的二次元配列に1行ずつ代入するにはどうしたらいいでしょうか

377 名前:デフォルトの名無しさん mailto:sage [2011/07/31(日) 16:54:49.27 ]
ふつうにOPENして読み込めばOK
一気に読み込んでsplitかけるなり一行づつREDIMして読むなりそのまま使うなりご自由に

378 名前:デフォルトの名無しさん mailto:sage [2011/07/31(日) 18:09:56.68 ]
splitかけるとして改行コードは何でしょうか

379 名前:デフォルトの名無しさん mailto:sage [2011/07/31(日) 18:11:54.16 ]
そんな事いちいち聞くなよ



380 名前:デフォルトの名無しさん mailto:sage [2011/07/31(日) 18:13:44.35 ]
vbCrLfでやってみたのですがうまくできなかったので・・・

381 名前:デフォルトの名無しさん mailto:sage [2011/07/31(日) 18:33:33.59 ]
>>380
バイナリエディタで開けば、改行にどんなコードが使われているか確認できるお

382 名前:デフォルトの名無しさん mailto:sage [2011/07/31(日) 23:58:30.78 ]
>>376,378,380
かなり情報古いけどここの情報も見ておけば?きっとここに書いてあるようなところで躓くはずだから
ttp://age.s22.xrea.com/talk2ch/

383 名前:デフォルトの名無しさん mailto:sage [2011/08/01(月) 00:24:54.94 ]
>>380
Dim Kaigyo$, Subject$, Subjects$()

If InStr(1, Subject$, vbNewLine) > 0 Then
 Kaigyo$ = vbNewLine
ElseIf InStr(1, Subject$, vbCrLf) > 0 Then
 Kaigyo$ = vbCrLf
ElseIf InStr(1, Subject$, vbCr) > 0 Then
 Kaigyo$ = vbCr
ElseIf InStr(1, Subject$, vbLf) > 0 Then
 Kaigyo$ = vbLf
Else
 Stop
End If
Subjects$ = Split(Subject$, Kaigyo$)

384 名前:デフォルトの名無しさん mailto:sage [2011/08/01(月) 00:28:52.62 ]
>>381-383
vbLfでした!ありがとうございます!

385 名前:デフォルトの名無しさん mailto:sage [2011/08/01(月) 14:13:48.49 ]
vb6ってUTF8をそのまま読めたっけか

386 名前:デフォルトの名無しさん mailto:sage [2011/08/01(月) 14:16:52.32 ]
vbNewLineって使うのまずいんじゃね

387 名前:デフォルトの名無しさん mailto:sage [2011/08/01(月) 14:23:44.49 ]
読んで配列に入れるだけなら問題ないんじゃね?妙な変換されたっけ?

388 名前:デフォルトの名無しさん mailto:sage [2011/08/01(月) 23:38:04.61 ]

subject.txtってUTF8になったの?

389 名前:デフォルトの名無しさん mailto:sage [2011/08/01(月) 23:46:36.19 ]
フォーム上にPictureBoxを配置しています
PictureBoxの角に○を書くにはどうしたらよいでしょう?
uproda.2ch-library.com/lib410514.bmp.shtml
上記が実現したいイメージです。○はペイントで書きました



390 名前:デフォルトの名無しさん mailto:sage [2011/08/02(火) 02:38:42.58 ]
画像見れない

391 名前:デフォルトの名無しさん mailto:sage [2011/08/02(火) 02:39:14.19 ]
Circleメソッド

392 名前:デフォルトの名無しさん mailto:sage [2011/08/02(火) 02:40:41.31 ]
じゃ無理か

393 名前:デフォルトの名無しさん mailto:sage [2011/08/02(火) 02:49:33.31 ]
目的や用途が不明だからよく分からんが
4つの白い四角形がそれぞれPictureBoxコントロールなのか?
でかいPictureBoxコントロールにぽつんとその四角描けば円も描けるだろうけど





394 名前:デフォルトの名無しさん mailto:sage [2011/08/02(火) 09:19:39.01 ]
61,61以上のPictureBox(以下、Picture1とする)にその□を書いて、
Picture1.Circle(12, 12), 11, RGB(255, 0, 0)とすればいいんでない?
※サイズはその画像から計算

その□の角が中心点だと、その半径分だけ大きいPicture1が必要だよね?

395 名前:デフォルトの名無しさん [2011/08/03(水) 00:07:20.45 ]
Line(x, 1)-(x, 5), &hff
って高さ4ピクセルの縦線なんだよ
変な仕様だよね

396 名前:デフォルトの名無しさん mailto:sage [2011/08/03(水) 00:12:10.29 ]
全然変じゃない。

ピクセルなどという、表示デバイスの都合に依存したフレームで考えてるから
変に思えるだけ。


397 名前:デフォルトの名無しさん mailto:sage [2011/08/03(水) 00:47:37.40 ]
ユーザー定義もできるーVB6標準コントロールどものスケール

398 名前:デフォルトの名無しさん mailto:sage [2011/08/03(水) 09:37:18.11 ]
XPでVB6SP6使ってるんですが
実行時エラー9 インデックスが有効範囲にありませんっていうエラーって
配列変数以外で起こる原因ってなんなんでしょうか?

399 名前:デフォルトの名無しさん [2011/08/03(水) 09:54:47.09 ]
>>396
じゃあ、ピクセル単位で(x1,y1)から(x2,y2)まで線を引く必要が生じた場合は
Psetを用いる以外にどのような方法が?

>>398
なんか覚えがある
もうちょっと詳しく



400 名前:デフォルトの名無しさん mailto:sage [2011/08/03(水) 10:09:28.10 ]
>>399
あるプロシージャ内で配列変数は使ってなく
RDOを使用してMSSQLに対してSELECT文を実行し
OpenStaticで取得したrdoResultsetのRowCountを参照して、
RowCountが1以上だったら実処理用のプロシージャをコールするだけなんですが
コールするプロシージャはそっち側でOnErrorしてますのでコール元にエラーが返ってくることはなく
なぜか配列を使ってないコール元のプロシージャで実行時エラー9が起きてて悩んでるんです

401 名前:デフォルトの名無しさん [2011/08/04(木) 17:45:29.59 ]
>>400
あーごめん、思い出すきっかけになるかと思って聞いてみたんだけど
思い出せなくてキリ番オメとしか言ってあげられない
IDEだと発生しないエラーだっけ?
他に心当たりある人がいなければ、コールする部分をコメントアウトしてみるとか
コード1行ごとにログを出力するとかして、どこで発生してるか突き止めるしかないね

402 名前:デフォルトの名無しさん mailto:sage [2011/08/07(日) 02:50:32.56 ]
vb6の不思議なとこは
関数の戻り値を関数から出るまでは何回でも変更できるし
CとかJAVAならreturnで即終了だいs

403 名前:デフォルトの名無しさん mailto:sage [2011/08/07(日) 12:21:03.79 ]
>returnで即終了だいs

returnで即終了だいすけ?

404 名前:デフォルトの名無しさん mailto:sage [2011/08/07(日) 17:02:26.91 ]
>>402
不思議と言うより、そこはVB6の優れているところだね
ただ、戻り値の返し方が関数名への代入ってのは頂けない
やはりここは関数名ではなく固有キーワードの方が良い

405 名前:デフォルトの名無しさん mailto:sage [2011/08/07(日) 18:55:29.26 ]
cやjavaなら冒頭で戻り値用の変数用意すれば同じことできるし
VB6は戻り値設定に関数名使ってるのもだるいが
関数からの抜け出しも文字数長くてしんどい

406 名前:デフォルトの名無しさん mailto:sage [2011/08/07(日) 20:47:23.43 ]
CやJavaでは、戻り値のあるなしどちらでも関数だが
VB6は片やfunction 方やsub。

これって何か意味あるかな?

407 名前:デフォルトの名無しさん mailto:sage [2011/08/07(日) 21:38:00.71 ]
>>406
もともとの行番号がついていた時代のBASICには関数はなかった。
しかし関数はなかったがサブルーチンはあった。
変数はグローバルで、サブルーチンは処理をまとめただけ。
CALLはそのサブルーチンを呼び出す命令。
subはその頃から互換性を保ちながらバージョンアップしてきた時の名残。

そもそもBASICは1964年に作られた初心者用言語で
(ちなみにC言語は1972年) 今のような使われ方、機能は想定されてなかった。

このような結構名残はたくさんあって、昔のBASICは変数を定義する必要はなかった。
ただし配列を使う場合には特別に定義する命令があった。それがVB6では変数を定義するときの
キーワードのDimになっている。DimとはDimension(n次元)の略なのに…の答えがこれ

変数の型も昔のBASICにはAs Integerとかなくて、変数名の最後に
%, &, $をつけて表していた。今も使える。

VB6の不思議な仕様はたいてい昔からの名残(互換性維持のため)と考えれば理解できるよ。
初期のBASICの仕様と、それから大きく発展したQUICK BASICの仕様を調べてみたらどうかな。

408 名前:デフォルトの名無しさん mailto:sage [2011/08/07(日) 22:11:16.48 ]
>>406
VBだってどっちにしろプロシージャーでしょ。

同じものを「何も返さない処理」と表現するか「無を返す関数」と表現するかの違いだが、
いずれにせよ深い意味なんてない。

数学的には後者の方が統一的で美しいけど、反面直観的ではないな。
線分を多角形の特殊形態だと言うのに近い。

409 名前:デフォルトの名無しさん mailto:sage [2011/08/08(月) 00:10:20.21 ]
.NETに以降したいけど、書き直すのが面倒です!
あの変換するの使っても結構修正箇所が。
(これは自分の作りに問題があるのだと思うけど)

というわけで、Windows7x64にVB6入れて使っている人いますか?
(XPモードじゃなくて)



410 名前:デフォルトの名無しさん mailto:sage [2011/08/08(月) 00:19:09.74 ]
一応、貼っておくか....
blogs.wankuma.com/jeanne/archive/2006/08/02/34597.aspx

411 名前:デフォルトの名無しさん mailto:sage [2011/08/08(月) 01:19:35.41 ]
一応、言っておくか....
.NETで作ってあるのもある。
自宅ではVB6だからそれを移行するのが面倒っていう話で。
というか、本題は。
>というわけで、Windows7x64にVB6入れて使っている人いますか?
>(XPモードじゃなくて)


412 名前:デフォルトの名無しさん mailto:sage [2011/08/08(月) 09:43:57.90 ]
>>406
単に Pascal に倣っただけでしょ。
「戻り値設定に関数名使ってる」のも同じ。

なんで Pascal は? って聞かれたら Wirth に聞いてくれというしかないが...。

413 名前:デフォルトの名無しさん mailto:sage [2011/08/09(火) 00:55:54.03 ]
>>409
MSにガイドが有るだろ
基本はプロテクトかかってないフォルダ、つまりProgram Filesとか以外にインストールでほぼ動くよ。
やってないとは思うがシステムフォルダのパス取得は直書きしないで全部関数使う
基本32bitで動くからその辺は気にしないで大丈夫だが、
COMとかDLLとかは実際に動かしてチェックしないと解らん。
あとはVirtualStoreとかの隠しフォルダに気をつけるぐらいかな

良く解らなければUAC切れ
こいつがファイルからレジストリまでユーザー単位で仮想化してるのがおかしくなる原因だ
後は互換モードを活用する
これは過去Ver.と7のAPI対応表を持ってて裏で変換してくれる

あ、プリンタAPIとか使ってるならそいつも確認
セッション0問題とかその辺が引っかかる可能性が有る。
ドライバ関係はメーカ対応無かったりで結構泣けた

移行やったの去年だから今はもうちょっと改善されてるかも?

414 名前:デフォルトの名無しさん mailto:sage [2011/08/09(火) 01:15:13.51 ]
>>413
移行できない、ではなくて、移行が面倒なんでは?
VB6製アプリが動くか、ではなくて、VB6IDE環境が動くかが知りたいたいのでは?
それに、単純にVB6のコードをVB.NETで動くようにしても、
クラス構造や例外やDBの扱いなんかが悲しいことに。

>>409
Win7(x64)で動くのかどうか知らないけど、VB6環境はXPモードでメンテのみに留めて、
メインの環境を変えちゃったほうがいいんじゃない?

415 名前:デフォルトの名無しさん mailto:sage [2011/08/09(火) 18:00:56.19 ]
InputManのimTextというコントロールについて知っている人が
いたら教えてください。

imTextをマルチラインで使った場合、半角カナの単語が行末に来る場合
単語が分割されないように自動的に改行されてしまいます。
これを分割されるようにする方法はないでしょうか?
それらしいプロパティが無く困っております。

よろしくお願いします。

416 名前:デフォルトの名無しさん mailto:sage [2011/08/09(火) 21:11:56.79 ]
>>415
スレ違い

あれは汎用コントロールであって、「VB6でも使える」だけで
VB6の付随品でもなければ、VB6用というわけでもない

そんな、VB6とは関係ないものの質問はNGです
お引き取り下さい

そもそも、正規に購入しているなら、サポートに問い合わせれば良いだけだ

417 名前:デフォルトの名無しさん mailto:sage [2011/08/09(火) 21:17:07.41 ]
書き忘れましたが自己解決しました。

418 名前:デフォルトの名無しさん mailto:sage [2011/08/10(水) 00:51:19.04 ]
>>414
あ、>>411か、これは恥ずかしい・・・
え〜と入れてたし動いてたけど>>414が正解だと思う
細かいとこで引っかかっていちいち対応するのがめんどかった

419 名前:デフォルトの名無しさん mailto:sage [2011/08/10(水) 15:42:21.66 ]
WebBrowserコントロールに動的に生成したHTMLを
表示したいのですが、最後の行でエラーになってしまいます。
WebBrowserコントロールに生成したHTMLDocumentを
設定するにはどうしたらいいでしょうか?

Dim doc As New MSHTML.HTMLDocument
Dim html As MSHTML.HTMLHtmlElement
Set html = doc.createElement("html")
Dim head As MSHTML.HTMLHeadElement
Set head = doc.createElement("head")
Call html.appendChild(head)
Dim body As MSHTML.HTMLBody
Set body = doc.createElement("body")
Call html.appendChild(body)

Set WebBrowser1.document = doc




420 名前:デフォルトの名無しさん mailto:sage [2011/08/11(木) 02:20:37.69 ]
OptionButtonコントロールの選択状態ってどう取得するのがスマートなの?
OptionButtonのClickイベントのたびに選択されたIndexを変数に保持する方法?
それとも状態を知りたいタイミングで一個一個選択された状態か確認する方法?

421 名前:デフォルトの名無しさん mailto:sage [2011/08/11(木) 06:24:07.84 ]
スマートさなんてのは、人それぞれの感覚で定義が違ってくるので
君にとってスマートなやり方は、君にしか解らない

VBAスレでも似たような展開になってるが、トリッキーでもコードが短ければ
それを以てスマートと感じる奴も居れば、可読性の高さにスマートさを感じる奴も居る
はたまた、汎用性の高さや、拡張性の高さにスマートさを感じる奴も居る

いそんな取得の仕方はWeb上に腐るほどサンプルとして転がってるから
自分でいろいろ見て、自分がスマートだと思った方法を真似れば良い

以上、さようなら

422 名前:デフォルトの名無しさん mailto:sage [2011/08/11(木) 08:42:51.88 ]
>>420
スマートにしたいのなら、UI部分とロジックは分離して
ロジック部分はUIを使わないでも(例えばCUIなどから)
実行できるようにするといい。

分離したロジックは別のクラスに書く


423 名前:デフォルトの名無しさん mailto:sage [2011/08/11(木) 09:48:38.09 ]
>>420
なんか愚問だな。

スマートの定義は置いとくとしても、どの方法が適切かは目的しだい。
常にこの方法が適切、なんてものはない。

例えばタブページのタブのように、オプションボタンで、あるコンテナの中に
表示される中身を切り替えたいとする。
こんな時にイベントドリブン以外の方法を採用できるのか。

例えば何かを設定する画面でユーザーがOKボタンをクリックするまで変更された
設定の適用を保留したい場合、イベントドリブンを採用して、ユーザーがオプションボタンを
クリックした時点で直ちに対応する設定値を変更してしまっていいのか。

424 名前:デフォルトの名無しさん mailto:sage [2011/08/11(木) 11:23:18.21 ]
以上、スマートなOptionButtonコントロールの選択状態の取得方法を知らない人たちの戯言でした

425 名前:デフォルトの名無しさん mailto:sage [2011/08/11(木) 11:35:22.43 ]
それより>>419頼みますよ。

426 名前:デフォルトの名無しさん mailto:sage [2011/08/11(木) 21:30:47.51 ]
>>424
その後にスマートな方法をスマートに書いていると格好良かったんだが
その1行だけだとかなり滑稽というか、君のが一番惨めな戯れ言に成り下がってるな

427 名前:デフォルトの名無しさん mailto:sage [2011/08/12(金) 00:57:24.17 ]
>>425
WebBrowserコントロールのdocumentプロパティは読み取り専用ではなく設定も可能なプロパティなの?

428 名前:デフォルトの名無しさん mailto:sage [2011/08/12(金) 08:38:11.07 ]
>>427
vb.netではできるので高い技術力を持ってすればできるのではないかと。
読み取り専用ごときに怯んではいけないかと。

429 名前:デフォルトの名無しさん mailto:sage [2011/08/12(金) 10:30:49.72 ]
>>426
ム板で自己満足のコードも無い長文を垂れ流すのを、タワゴトと言わずして何と言おうか



430 名前:まあ、短いだけましだが> mailto:sage [2011/08/12(金) 11:27:57.51 ]
短くても戯言は戯言だし...。

431 名前:デフォルトの名無しさん mailto:sage [2011/08/12(金) 21:09:59.41 ]
>>429
悔しかったの?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<260KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef