for Windows Xp Vista 7 10 Keyboard IE カーナビを... ダイアグスキャナー 徒歩メーター 燃費ティーチャー サンプリングメーター みるCAN CANメッセンジャー CANレコーダー CANレーベル VB6の長所と短所 なぜVB6を使うのか VB6のトラブル集1 VB6のトラブル集2 UWPのトラブル集1 C言語のコメント作法 C言語の常識ルール クルマ整備技術サイト |
||||||||
|
||||||||
VB6のトラブル集2 IDE編 2019.1.5 2019.2.9 更新 Windows10で使用していると色々とトラブルがあるのでまとめてみました。 Googleで検索するとより詳しく出てくる内容もあるかもしれません。 No.0004 作成日:2019.2.8
コントロール配列を使ってみたら、挙動がおかしくなりました。
原因 コントロール配列は配列ですが、一般的な配列とは異なった仕様になっています。 コントロール配列でボタンやテキストボックスなどを配置した場合、 自動で小さな数字がIndexとして割り当てられます。 通常は0、1、2、3、4、5、6と昇順で割り当てられます。 しかしルール上、このIndexの数字は自由に決められます。 例えば0、2、4、6と割り当てて、 1、3、5がなかったとしてもエラーになりません。 デバッガーは数字が抜けていることを教えてくれません。 例えばIndexが0〜7までのTextBoxのコントロール配列があったとします。 以下のようなコーディングをした場合、普通の配列であれば i = 8 のときに デバッガーがエラーを出して停止します。 i = 0 Do While i <= 8 TextBox(i).Alignment = 1 i = i + 1 Loop しかしこの場合はエラーが出ずにこのまま進みます。 当然ですが範囲外にデータを書き込むことになるので、メモリリークになります。 この後に何かの処理があれば正常に動作しない場合があります。 何事もなかったかのように動き続けることもあります。 しかしデバッガーでは一切の警告をしてくれません。 対策 コントロール配列は配列ですが、割と自由な仕様であるためか、 間違ったことをしてもエラーで教えてくれません。 できることは以下のことぐらいです。 ・配列のIndexは、必ず0から連番で振っていく ・以下の各プロパティを活用する コントロール配列全体を示すプロパティですので、Indexは指定しません。 Count : コントロール配列の要素数 UBound : コントロール配列のIndexの最大値 LBound : コントロール配列のIndexの最小値 例えば上のソースの場合は以下のようにすれば、うっかり削除してしまった等の何らかのミスでコントロール配列の要素数が変動した場合に気づくことができます。 Indexのカウントアップの判定には UBound もしくは Count - 1 を使用します。 If TextBox.Count - 1 <> TextBox.UBound Then Call MsgBox("コントロール配列 TextBox の要素数が異常です。", _ vbCritical, "構文エラー") End If i = 0 Do While i <= TextBox.UBound TextBox(i).Alignment = 1 i = i + 1 Loop No.0003 作成日:2019.2.1
デバッグ中にIDEごとフリーズしてしまう。IDEの挙動がおかしくなる。IDEが落ちてしまう。
原因 デバッグ中のIDEは、プログラムも含めて1つのシングルスレッドで動いているようです。 そのため、ソースコードに無限ループがあるとIDEごとフリーズしてしまいます。 メモリリークのようなバグがあるとそのまま落ちてしまいます。 これはOSによらず、WindowsXP等でも同じように発生します。 ただし、WindowsXPではIDEごとすぐに落ちる場合でも、Windows10では落ちずにフリーズしたり不安定な動作のまま残る場合があります。 対策方法 VisualStudio2010などと比べると貧弱なIDEであるため、バグのない完璧なソースをコーディング心がけるしかありません。 プロジェクトは、こまめに上書き保存をする癖も必要てす。実行時に自動保存してくれる機能はなく、未保存のプロジェクトを復元してくれるような優しい機能もありません。 例えば最初にバグだらけのコードを一気に書き上げる方法や、デバッガーに頼って修正していくやり方に慣れていると、VB6はシビア過ぎて挫折してしまうでしょう。 No.0002 作成日:2019.2.1
IDEからプログラムを実行すると、OLEDragModeやOLEDropModeが有効にならない。ファイルやフォルダをコントロールにドラッグしても禁止マークになってしまう。
不明です。 Windows7等では正常にできますが、Windows10で現象が発生します。 対策方法 EXEファイルを作成して、EXEファイルから実行するとOLEが正常に機能します。 IDEから実行すると利用不可(禁止)になってしまうようです。 No.0001 作成日:2019.1.5
プロジェクトを開くときに 「MSCOMCTL.OCX を読み込めません。--プロジェクトのロード を続けますか?」と出る
プロジェクトを開くときに以下のエラーが出ることがあります。 「はい」を押して正常に開くことができてビルドやソフトの動作に問題がない場合は、 プロジェクトを上書き保存します。するとエラーが出なくなります。 以下のエラーが続けて出た場合は正常に開くことができていません。 この場合は、プロジェクトを上書き保存してはいけません。調べ方や対策方法は以下の通りです。 原因 MSCOMCTL.OCXのバージョンが違うために発生します 具体的には、開発時にインストールされていたMSCOMCTL.OCXが新しく、 Windowsの再インストールや他のパソコンにプロジェクトのフォルダを移動させたときに インストールされているMSCOMCTL.OCXが古いと発生します。 対策方法 以下の2つの方法があります。 @ MSCOMCTL.OCXを最新にする A プロジェクトファイルを修正する 通常は最新の MSCOMCTL.OCX をインストールする方法を選択します。 2019年1月現在での最新の MSCOMCTL.OCX は、KB3096896 公開日: 2016/01/08 をインストールすることで置き換えられます。 このMSCOMCTL.OCXのバージョンは2.2です。 業務上において、契約や制約などによって安易に最新バージョンがインストールできない場合は、 止むを得ずプロジェクトファイルを修正する方法を採ります。 方法は以下の通りです。
|
Copyright (C)1999-2024 SUWA TSUSHIN NETWORK. All Rights Reserved. |
ご利用条件 |