環境:Win2000Pro VB6
タイトルのとおりなのですが、デバックモードで実行しているのか、コンパイル済みのものを実行しているかを知りたいのですが 良い方法がわかりません。?
なぜこんなことをしたいのかと言うと、ディバック時 チェック用に複数のボタン
を配置したり 仮のデータ作成プログラムを実行させたりしています、コンパイル
する時にこれを削除するのが面倒なのでコンパイルしてあるものには非表示や
実行されないようにしたいのです、
今の状態(モード)を取得するような関数はないのでしょうか。
わがままな質問ですがよろしくお願いします。
判定方法はいくつかあるみたいです。
まず、邪道な方法としてDebug.Printでエラーを発生させてトラップする方法。
Debug.Print 1/0 '0の除算はできないのでエラー発生
EXE実行時ならDebug.Printは通過しないのでエラーが発生しない。
正式(MSDNに記述されてる?)な方法は、
方法1:EXE ファイル名にプロジェクト名とは異なる名前をつける
方法2:GetModuleFileName API を使用する
詳細はMSDNを参照。(「開発環境 判定 VB」で検索)
他の方法として条件付きコンパイル引数を設定してデバッグ版・リリース版を分
けるようにする方法があります。欠点はリリース時にコンパイル条件を正しく再
設定しなければならないということです。(忘れるとデバッグ版のまま出荷して
しまう)
プロジェクト→プロジェクト名(任意)のプロパティ→[実行可能ファイルの作成]
タブの条件付きコンパイル引数に値を設定すればいいです。
例.DEBUGMODE = 1
Private Sub Form_Load()
#If DEBUGMODE = 0 Then
MsgBox "Release Mode"
#End If
#If DEBUGMODE = 1 Then
MsgBox "Debug Mode1"
#End If
#If DEBUGMODE = 2 Then
MsgBox "Debug Mode2"
#End If
End Sub
条件付きコンパイル引数に値が設定されていなければ0の扱いになります。
私の場合は、
If IsDesign() Then
MsgBox "デバッグ環境です。"
Else
MsgBox "コンパイルされています。
End If
にて処理できるよう、標準モジュールに以下のような関数を用意しています。
'*********1*********2*********3*********4*********5*********6*********7*********
' 名 称 : IsDesign
' 説 明 : 開発環境で実行されているのか、コンパイル後の実行なのかを判断する。
' 引 数 : なし
' 戻り値: 開発環境(IDE)であれば True、コンパイル後(EXE等)ならば False
'*********1*********2*********3*********4*********5*********6*********7*********
Public Property Get IsDesign() As Boolean
IsDesign = IsDesign__(True)
End Property
Private Function IsDesign__(ByRef bolIsDesign As Boolean) As Boolean
'引数値を反転する
bolIsDesign = Not bolIsDesign
If bolIsDesign = False Then
'開発環境(IDE)の場合、下記のAssertメソッドが実行されるので、
'引数が再度反転し、True(コンパイル済み環境である事を示す)を
'返すようにようになる。
Debug.Assert IsDesign__(bolIsDesign)
End If
IsDesign__ = bolIsDesign
End Function
GODさん 魔界の仮面弁士さん 早速の回答ありがとうございます。
たくさん行い方があり、今どれが自分のプログラムに適当なのか考えております。
本当はMSDNに載っていたのですね、探し方が悪くお手数をおかけしました。
これからもう少し良く探してから質問します、本当にありがとうございました。
ツイート | ![]() |