古代VBプログラマ質問スレ(Ver.6.0 まで) part65 [転載禁止]©2ch.net
ここは古代に使われていたVisual Basic 〜6.0 の質問スレです。
質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、
「何がしたくて、どうしたけど、どう困っているのか」を明確に書きましょう。
VB.NETは別物なので専門スレで、VBA、APIの質問もそれぞれのスレで。
○ 質問者の心得
一.質問する前にMSDNやGoogle、過去ログにも目を通してみる。
二.VBScript、インストーラーなどはこのスレでOK。
三.質問は第三者にもわかりやすいよう簡潔かつ具体的に。
四.荒らしは相手しない。
○ 回答者の心得
一.答えられない質問は無駄に罵倒せずスルー。無理するな。
二.代用法を強制しない。
三.回答する上で必須ではない情報をむやみに聞き返さない。
四.荒らしは相手しない。
五.VB情報募集中。
六.回答は質問者が理解できるよう具体的に。
MSDN Online Japan ホーム
http://www.microsoft.com/japan/msdn/default.asp
Visual Studio 6.0 Service Pack 6
http://msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp6/default.aspx
Google
http://www.google.co.jp/
前スレ VBプログラマ質問スレ(Ver.6.0 まで) part64
http://peace.2ch.net/test/read.cgi/tech/1393069842/
※「まず自分で調べる」クセを身につけよう。 古代かいw
もっと古いのを使ってた俺みたいなのも居るのに! 古代の言語なんだろうけど、全然使いこなしていないんだよな(w) いにしえの古代兵器がオーパーツであるのは
何時の時代のファンタジーも一緒だ。 >>5
ありがと。
>>全然使いこなしていないんだよな(w)
これ自分のことなんだよね。
奥が深いなと思っている。 >>5
オーパーツとおパンツって似てるよね。
そういう意味でもファンタジー。 古代でBASICといえばN−BASIC辺りを指しそうなもんだけれどな
俺も歳をとったのか 結局スレタイをどうこうしようと
VBに.NET以前のバージョンのVBが存在してることを知らない連中が紛れ込む悪寒 そんな奴はいねえよw
VB6以前を知らないのにあえてVBを選択する奴なんかいない。
仮にいてもVBでググれば嫌でもVB6の存在を知ることになる。 ググればすぐ分かるようなことをスレに質問に来るような連中って結構いるんだぞ >>8
古代BASICならそうかもしれないが、
古代Visual Basicなんだから、N-BASICは当てはまらない。 VB6を現役でコーディングしてる奴は、このスレに居るのだろうか? ここにいますよ
新規システムもバリバリ開発してますよ プログラマー集めて石を投げればJavaやってる奴に当たると言うくらい
Javaが横行している世の中で、VBばかりやってる奴は
相当な希少種だという話を聞いたことがある。 Javaの公式APIドキュメントとかで日本語版が用意されているのはJavaのメインの顧客は日本だからか?
VB6がWindows10でも使えるようになったのもやはり日本がVB6のメインの顧客だから? C→C++→Java→VB6→VB.NETと来て、VB6がメインな俺は貴重な存在
ほんとは早いうちに.NETに移行したいけど、予算や納期がまにあわん
客もフレームワークかえたら余分な金かかるだけだろってわかってるから
動くうちは当面VB6だわ
>>16
アメリカでもVB6は現役、もし未だにVB6つかってんのが日本だけじゃとっくに切られてると思うわ サードパーティー製のOCXとか使えなくなったりしないの?
グラフとかグリッドとかその他もろもろ。 俺の周りでは.netに移行してもvb6ののりでしかやってないやつばっか まだwindows2000のPC使ったコントローラが動いてて… うちなんかNT4のシステムが・・・VB5で・・・ううっ・・・ DOS機のフロッピーに組んだQuickBasicシステムが調子悪いっていう問合せがきた・・
さすがに勘弁してほしい・・
中古のHDD積んでWin98とVB5で造り直してやろうかなw QuickBasicは通信が出来たから
通信対戦テトリス作った記憶がある
電子専門学校行ってた俺の卒業論文代わりである >>28
ISAのハード積んでるのよ、これが。
どうやらそれ自体は生きてるみたいだからデバドラの事情でその辺の時代までしか進化させられないんだよね。 古代ってつけるから、古いBASICの話が盛り上がってしまうではないか 古代っていうからファルコムと何か関係があるのか思った >>34
祐三なら今、世界樹と不思議のダンジョンの音楽作ってたみたいだぞ 前スレで例外処理についてやってたみたいだけど
なるべくエラー行を特定するためにも
On Error Resume NextとErr.Clearでなんとかするって自分内で結論した
つまりエラーになる予測が立つメソッドを呼び出す時は呼び出す側が責任を持つけど
それより上の親とかは関知しない
処理が進まない致命的なエラーなら子に状態を返させて親が終了したりするけど
VBの例外機構ってネストの概念がないからOn Error Goto
とか凝ったことやろうとすると破綻する気がする >>38
いきなり結論覆して申し訳ないけど、そもそもエラーになる予測がつくところなら先にチェックしないか?
予測がつかない実行時エラーは中断するべきだろうから
親というよりは最上階層まで影響が出ることになるかも知れないし。
なるべくエラー行を特定したいと言うのも、どうせOn Error Resume Next使うということは
その先でエラーが起きたかどうかの分岐を入れるつもりなんでしょ?
そもそもそんな作りにするくらいの長い関数を作るつもりなのかを先に聞きたい。 >>39
ファイルオープンするために、いちいちファイルの存在チェックとか、パーミッションのチェックするの?
それでOKになったとしても、誰かが排他オープンしてて、オープン失敗とかあるかもだし。 >>40
ファイルの存在チェックくらいするだろうけどまぁいいや。
その辺を実行時エラーで捕まえるのはいいとしても、
責任?はもう少し考えた方がいいと思う。
例えば分散トランザクションとか、2度以上に渡って段階的にロールバックが必要で、
それぞれ別の階層で行われるような場合とか。
責任を与えるとしたらOnErrorが書いてあるところの責任はエラー情報の収集、
それ以外はそれぞれの処理に合わせて臨機応変になると思うよ。 >>41
責任について会話したつもりはないし、するつもりはない。
アトミックな動作で成功か失敗かわかるのに、わざわざ不十分で不要なエラーチェックを
事前にして、なおかつそれでOKでもさらに失敗する可能性があるようなことを勧めるのは
どうかと思っただけ。
socket.connectしてみれば、有効なネットワークI/Fが無いところから、ホスト名が解決できない、
解決はできたが接続不可、接続タイムアウト、そして予見可能なさまざまなエラーが
わかるんだが。 >>39
> そもそもエラーになる予測がつくところなら先にチェックしないか?
実行時エラーっていうのは、先にチェックが出来ないものなんだよ。
先にチェックした所で意味が無い。(例外はある)
例えば、ファイルが有るか? を調べた後に別プロセスが消したらどうする?
データベースに接続できるか?をチェックした後に接続が切れたらどうする?
ロックかけられるか?を調べた後に別プロセスがロックしたらどうする?
先にチェックするという考えをしたら
それは間違いだと思ったほうがいい。 VB6と関係ないプログラミング一般論で熱くなるなよ…
そもそもVB6に常識は通用しない(キリッ >>43
Windowsはファイルオープン後にファイルが消される心配はない、つまりオープンでエラーチェックすればいい
データベース接続にしても、実際にコネクトだしてみて成功か失敗かで判定するから何の問題もない
先にロックされていたらロック待ちに入るだけだから何の問題もない、タイムアウトするまで気長に待てばいい
トランザクション開始後に何かエラーがおきても、とりあえずロールバックだせばいい
それにロールバック前にプロセスが死んでもTPモニタがトランザクションを回収してくれるから安心していいぞ
分散トランだろうろうがローカルトランだろうが、そこらへんは同じだ >>45
実行時エラーを、事前にチェックで発生しないように出来はしないって話
話わかってないなら参加しないでね。
あと、そこに書いてあること、
全部間違いだから。 ははは、単に書いてあることが理解できなかっただけでしょ
ロックできないと実行時エラーがでるDBMSがあればお目にかかりたいわ
いろいろ糞なSymfowareでもさえそんなことしないぞ 当たり前だけど>>46の方が正しいね。
このレベルが議論になるってプログラマ1年生かよw
前スレで例外はいちいち捕捉せず一か所でまとめて....とか言ってた奴と同レベル。 >>48
> 前スレで例外はいちいち捕捉せず一か所でまとめて....とか言ってた奴と同レベル。
同一人物じゃないの? >>47
> ロックできないと実行時エラーがでるDBMSがあればお目にかかりたいわ
http://www.kitagawa-hanga.com/se/s_vberr.html#EJ005
> Q:実行時エラー'''-2147217900(80040e14) ロックできませんでした。
> A1:ACCESSのDBが開いていた。
それにもともとデータベースのロックとは書かれてないので
ファイルのロックの可能性もある。 実行してみなければ、実行できるかどうかわからないことがある。
ということを理解できるかどうかという壁があるんだと思うね。
外部リソースを使うようなもの。
例えばファイルとかデータベースとかは
どんな操作でも実行時エラーになる可能性がある。
例えば、大量のデータを書き込んでる途中で
ネットワークが切れたらどうするの?とか
ディスクがいっぱいになったらどうするの?とか
こういうのは書き込み前にいくらチェックした所で
問題なく処理が完了するかどうかはわからない。 なんか話がずれてきた感があるな。
そういう本当に実行してみるまでわからない場合じゃなくて、わかる場合でさえ、ほとんどの場合は
事前エラーチェックなんて不要だって話なんだが。
例えば、ファイルオープンチェック前のファイル存在チェックなんかいらないとか。
(ファイルが存在しない場合にオープンエラーになるケース) >>52
俺の定義では、ファイルのオープン前の存在チェックは
「実行するまでわからない」に含まれています。
なぜなら、存在チェックした後で
ファイルが消される可能性があるから。
実行する前にわかるものは0除算チェックとかね。
ただ重要な事はアプリを作る上では原則としてどこの行でも
実行エラーが発生するかもしれないという前提で作ること。 >>53
> 俺の定義では、ファイルのオープン前の存在チェックは
> 「実行するまでわからない」に含まれています。
俺もそうだよ。
実行する前にわかるエラーでも、事前エラーチェックが不要なケースの話をしているつもりなんだが。
同じこと何回も言ってる気がする。 >>51
大量書込みの場合は、書き込み処理前の空き容量チェックと
write実行時の両方でエラーチェックするのが当然なんだけど
なんで事前チェックが不要だと思ったのかが聞きたいな >>55
どうでもいいけど、ファイルを読み込みオープンする前にファイルの存在チェックはするの? >>55
事前チェックは単なるユーザビリティ用。
例えば空き容量チェックをすることで
30分たってからエラーになるよりも
その前にわかったほうが、ユーザビリティは良い。
だがこれはディスクに空き容量があることの保証にはならない。
なぜならチェックした後に、他のプロセスが書き込んで
チェックした時よりも減ることがあるからだ。
だから事前チェックは「空き容量があるだろうチェック」であり
そのチェックを通っても、空き容量がないというエラーが発生することがある。
簡潔に言うと
・事前チェック=必ずしも必要ではないう(追加でやっても良い)
・実行時エラー=必ず必要 >>54
> 実行する前にわかるエラーでも、事前エラーチェックが不要なケースの話をしているつもりなんだが。
俺は最初から、事前エラーチェックはしなくても良い
してもいいが、事前にチェックした項目でも、エラーが発生することがある
って言ってるんだが? >>56
ファイルリストボックスに列挙されてるなければ無い、という事じゃなくて? >>56
するときもあるし、しないときもある
するときっていうのは、>>57のいっているようなユーザビリティのためってことが多い
処理が何フェーズかに分かれていて、それぞれ処理に数分かかり使うファイルが異なる
ような場合だと、あらかじめ各フェーズで使用するファイルやその他処理実行に必要な
要件を満たしているかを、すべてチェックしてから最初のフェーズを開始したほうが
何十分も処理したあげく途中で失敗してユーザを落胆(もしくは激怒)させる可能性が低くなる
しないときは、それが必要のない時とか、そんなプログラム書くのが面倒くさくなった時も含まれる なんで、あんたらVB6と無関係な話を延々とし続けるんだ? >>59
> ファイルリストボックスに列挙されてるなければ無い、という事じゃなくて?
ファイルリストボックスに列挙されてなくても、ファイルがある時はあるし、
列挙されていても、ファイルがないときもある。 VBだとフォーム上のコントロールにデータをもたせると比較的簡単にプログラムが組めてしまうから
逆にプログラマがバカなまま育たないのかも知れないな
最初からVBしかやってない人と、ほかの言語からVBに来た人では、
データ構造とかエラーチェックに対する考え方がまるで違う気がする >>63
> 最初からVBしかやってない人と、ほかの言語からVBに来た人では、
> データ構造とかエラーチェックに対する考え方がまるで違う気がする
だから何なの? 多分、自分がVBしかやっていないから他の言語から来た人を余計な事をする
馬鹿だと言いたいんじゃない? ほかの言語って具体的に何を想定してるんだろうな
VB時代の言語でVBと同程度のRADツールで比べてもそう言う結論になるのかどうか delphi…
OSSでこういうのができないものか >>68
VBと比較するのに同程度じゃないものとくらべる方がおかしくないか?
たとえばアセンブラとVBで
>データ構造とかエラーチェックに対する考え方がまるで違う
って言われても、そりゃそうだとしか思わんが なんかWIN7でVB6のIDEが動かなくなったんだけど
MSパッチでもきたのかな。
以下のメッセージが出て
コンポーネント'ComDlg32.OCX'、またはその依存関係のひとつが適切に
登録されていません。ファイルが存在しないか、あるいは不正です。
Continue?
以下コマンドを管理者権限で実行しても改善せず。
C:\Windows\regtlib.exe C:\Windows\system32\msdatsrc.tlb 自己解決。
regsvr32 /u c:\windows\syswow64\comdlg32.ocx
regsvr32 c:\windows\syswow64\comdlg32.ocx 過疎化ってるからチラ裏でも良いよね?
>>27だけど、Win2000とVB6で作っちゃったよw
全てにおいで懐かしかったな。
久々のVBいじりだったけど楽しかった。 そのWin2kはライセンスされてるのかね?
アクティベーションがない時代なんだよね
おれも知り合いの中国人に円盤もらったわ VB6プログラマなら、Win98やNTや2Kのパッケージくらい持ってるだろ Win98のCDパッケージをポケットに入れて、ポンポンと叩くとあら不思議!
WinNT4.0とWin2kのCDパッケージ二つに…
なるわけないよね… 最初のVBはWin3.1上のVB2だった
イベントドリブンが何だか分からなくて苦労したが
BASICの232C通信で使うON COM GOTOで既にあったんだよな VB2.0は神だったけど作ってた人はdelphiに移ったんだっけ VB6のIDEがWindows 10 x64に乗らん
みんなどうしてる? >>83
VMware WorkstationのゲストにVB6のIDEが動くWindows 7を入れてその上で使っている
いずれにせよx64でVB6 IDEを使うのは問題が多い
動かんわけではないが うちはとりあえずVirtualBox上のXPにインストールして使ってます >>83
VB6のインストール時に「データアクセス」のチェックボックスを外すカスタマイズをしてインストールする。
インストールが完了したら、下記2つのSPを導入する
Visual Basic 6.0 Service Pack 6ランタイム再頒布可能パッケージ
VB6.0-KB290887-X86.exe
Visual Basic 6.0 Service Pack 6 累積的な更新プログラム
VB60SP6-KB2708437-x86-JPN.msi
「データアクセス」に相当するコンポーネントはXP以降、Windows側で搭載している
(但しDAO 3.5等一部のコンポーネントは導入されない場合がある)
今更VB6を使ってるアホがいるのかと馬鹿にしていたが
先日、.netとMFCを使わず作れという案件があって使わせてもらったところ いまやランタイム個別インストールの要るVBはOKだったのかい >>87
VB6の日本ランタイムはXP以降では個別インストールは不要
?Msvbvm60.dll
?Stdole2.tlb
?Oleaut32.dll
?Olepro32.dll
?Comcat.dll
?Asycfilt.dll
?Ctl3d32.dll
但し、英語版を前提にしているので日本語を使用する場合は
vb6jp.dlのみシステムフォルダへコピー要
l
いまやと言われるが
?Msvbvm60.dll
?vb6jp.dll >>88
日本語版Windowsにはvb6jp.dllをプリインストールしておいて欲しいよな
そしたらEXEだけの配布であたかも動くように錯覚させられる >>89
日本語の文字はイメージにして貼り付けて原寸で表示すればいい。
実際にはランタイムで動くが配布はexe一本で済むから
.netのバージョンがどうとかサイドバイサイドにしたりやめたり訳わからん
C++ライブラリやMFCのバージョン依存からも解放される VC6使ってmsvcrt.dllだけリンクすればどこでも動くよ的なことをVB6でやろうとしてるのかな DLLの静的リンクとデフォで導入されたDLLを前提とするEXEでは意味が全然違う 昔ボーランド製言語でランタイムごと静的リンクってやってたよな
ちょっとしたアプリすら数MBのEXEになるってやつ
あれはあれで楽だった 悪の組織はVBとかGWーBASICでセキュリティーシステム構築しているよな VB6で接続出来るSQL serverのバージョンは2008、2012あたりまで? >>96
2016もできますよ
Native Clientもまだ使えるし、驚くなかれCOMのDMOでさえDLLをコピーしてレジストすれば使えてしまうのですわん! サポートされない = 使えない
と考える大手企業の俺としては× >>97 :デフォルトの名無しさん:2015/11/13(金) 21:18:31.36 ID:YBJ5maQh
>>2016もできますよ
>>Native Clientもまだ使えるし、驚くなかれCOMのDMOでさえDLLをコピーしてレジストすれば使えてしまうのですわん!
>>
>>99 :デフォルトの名無しさん:2015/11/13(金) 21:23:08.82 ID:YBJ5maQh
>>サポートされない = 使えない
>>
>>と考える大手企業の俺としては×
ID:YBJ5maQhさんは何が言いたいんだべか