
VB6 SP5
フォームのロードで構造体変数に
値を入れ、ボタンを押したときに
IF文の処理を通したのですが
aaaに20以上の数値を入れると
該当の処理を通らず全てELSEを
通ってしまいます
以下コード
////// 標準モジュール //////
Type Strct_Dat
□□start_no(5) As Integer
□□end_no(5) As Integer
End Type
Global StrctDat As Strct_Dat
////// フォーム //////
Private Sub Form_Load()
□□With StrctDat
□□□□.start_no(0) = 1
□□□□.start_no(1) = 10
□□□□.start_no(2) = 20
□□□□.start_no(3) = 30
□□□□.start_no(4) = 40
□□□□.end_no(0) = 9
□□□□.end_no(1) = 19
□□□□.end_no(2) = 29
□□□□.end_no(3) = 39
□□□□.end_no(4) = 49
□□End With
End Sub
Private Sub Command3_Click()
□□Dim aaa As Integer
□□aaa = 20
□□With StrctDat
□□□□If .start_no(0) <= aaa And aaa <= .end_no(0) Then
□□□□□□MsgBox ("0")
□□□□ElseIf .start_no(1) <= aaa And aaa <= .end_no(1) Then
□□□□□□MsgBox ("1")
□□□□ElseIf .start_no(2) <= aaa And aaa <= .end_no(2) Then
□□□□□□MsgBox ("2")
□□□□ElseIf .start_no(3) <= aaa And aaa <= .end_no(3) Then
□□□□□□MsgBox ("3")
□□□□ElseIf .start_no(4) <= aaa And aaa <= .end_no(4) Then
□□□□□□MsgBox ("4")
□□□□Else
□□□□□□MsgBox ("ELSE")
□□□□End If
□□End With
End Sub
構造体の型をLONGにすると
ちゃんと該当処理をとおります
また、デバッグ時は正常で
EXE化したときのみ該当処理を
通らなくなります
回避方法はあるのですが
何かご存知の方いらっしゃいましたら
教えて下さい
よろしくお願い致します
No.1ベストアンサー
- 回答日時:
何とも妙な現象ですね。
条件式を変えるとうまく動く場合もあることから、コンパイラの最適化ルーチンのバグのようです。VB6にはSP6が出ていますが、SP6でも修正されていません。MSKBにもこれに関する情報はないようです。
応急策としては、プロジェクト(P)→プロジェクトのプロパティ(E)...→「コンパイル」タブで「P-Codeコンパイル(P)」を選択するか、「ネイティブコードコンパイル(N)」を選択する場合は最適化オプションで「最適化なし(O)」を選択すると正常に動作するようです。
No.5
- 回答日時:
先ほどは失礼しました。
解決策になるか分かりませんが
ローカルで宣言すればOKのようです
////// フォーム //////
Private StrctDat As Strct_Dat <--- ここ
Private Sub Form_Load()
With StrctDat
.start_no(0) = 1
.start_no(1) = 10
.start_no(2) = 20
.start_no(3) = 30
.start_no(4) = 40
.end_no(0) = 9
.end_no(1) = 19
.end_no(2) = 29
.end_no(3) = 39
.end_no(4) = 49
End With
Command3_Click
End Sub
No.3
- 回答日時:
質問者さんではありませんが、#2の方に補足を。
インタプリタ実行では現象は発生しません。ですので、ステップインで現象を確認することはできません。
現象が発生するのは、質問の中にあるように「EXE化したときのみ」です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
window.openでフルスクリーン表...
-
不思議な小窓を出現させるスプ...
-
SQLのWHEREで全てを質問する方法
-
JAVAでリンクボタンを作成して...
-
htmlファイルを開いた時の画面...
-
ホームページで window.open() ...
-
location.hrefを使ったインライ...
-
外部からのjs呼び出しについて。
-
<a href="#" …>の意味を教えて...
-
ウインドウの後ろに隠れている...
-
bodyにidをつける理由は何ですか?
-
JavaScriptでiframeの内容を「...
-
selectタグで日付を生成
-
html メールリンクにて自動ファ...
-
テキストボックス内にハイパー...
-
innerHTMLが動作しない。
-
別ファイルのfunctionの読み込み方
-
¥マークの検索について
-
javascriptでalertの文字列をコ...
-
マウスクリックした地点のテキ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
htmlファイルを開いた時の画面...
-
あなたのXAMPPのdashboard内のj...
-
window.openでフルスクリーン表...
-
jquery の mouseleave について...
-
外部からのjs呼び出しについて。
-
JavaScriptで小窓を表示したい
-
SQLのWHEREで全てを質問する方法
-
ブラウザーの左下に、「java sc...
-
ホームページで window.open() ...
-
ウィンドウを閉じる際のダイアログ
-
window.openで404エラーがでます
-
JavaScriptで新しいウインドウ...
-
IEのタイトル変更方法について
-
question about Prolog
-
javaでサムネイルをクリックし...
-
最初からツールバーなしでhtml...
-
クロスドメインのjsonpをjquery...
-
色の指定で配列を使いたい
-
小窓を表示する時に、必ず右上...
-
Canvasを使って描画して面積取得
おすすめ情報