◆ [VBScript] デバッグ上手はプログラム上手5 ~まとめ~
どーもボキです。

クラスの初期化&終了処理機能を利用したデバッグクラスを作成した。

このクラスは、
初期処理時には、スクリプトホストを判定
終了処理時には、デバッグモード時(CScriptホストでの実行時)のみ、ユーザの入力を待ち受ける。
(ユーザの入力を待ち受けなければ、デバッグメッセージを表示した黒い画面が、スクリプト終了時に閉じるため)

このdprintf()関数は、CScriptホストのときのみ、デバッグメッセージを表示する。
そのため、一般的なPC(デフォルトホストはWSCript)には、デバッグしたスクリプトをそのまま展開できる。

デバッグ用クラスの定義ファイル vbCommon.vbs
' デバッグクラスを作成
Dim DebugClass
Set DebugClass = New TDebug

' 共通定数
Dim bCScript


' -------------------------------------------------------------------------------
' cscriptホストのみ、Echo実行
Sub dprintf(v)
DebugClass.dprintf(v)
End Sub



Class TDebug
Private Sub Class_Initialize()
bCScript = InStr(LCase(WSCript.FullName),"cscript") > 0
End Sub

Private Sub Class_Terminate()
If Not bCScript Then Exit Sub

WScript.StdOut.WriteLine WScript.ScriptFullName & " [END]"
WScript.StdIn.ReadLine
End Sub


Public Sub dprintf(v)
Dim i,s
If Not bCScript Then Exit Sub

s = v
If VarType(v) >= vbArray Then
s = ""
For i = 0 to UBound(v)
s = s & "dprintf(" &i& ")=" & v(i) & vbCRLF
Next
End If
WScript.Echo s
End Sub
End Class


デバッグクラスを定義したvbCommon.vbsを読み込む方法は、その3で紹介した2つ。
以下を見れば、Executeの方を利用するほうがシンプルで管理しやすいことがわかる。

1.Executeメソッドを利用する方法
Execute CreateObject("Scripting.FileSystemObject").OpenTextFile("vbCommon.vbs").ReadAll()
'─────────────────────────────────────────────

dprintf("ど")
dprintf("│")
dprintf("も")
dprintf("ボ")
dprintf("キ")
dprintf("で")
dprintf("す")

wsfファイルなら、languageでスクリプトエンジンを指定できるから、
複数の言語を混在できるんだろうね。VBScriptとJScriptの混在とか。使わないけど。

2.wsfファイルを利用する方法
<job>
<script language="VBScript" src="vbCommon.vbs"/>
<script language="VBScript">
'───────────────────────────
dprintf("ど")
dprintf("│")
dprintf("も")
dprintf("ボ")
dprintf("キ")
dprintf("で")
dprintf("す")
'───────────────────────────
</script>
</job>

このvbCommon.vbsをデバッグだけに使うのではなく、汎用的な関数や、
頻繁に使うオブジェクトをあらかじめCreateObjectしておけば、メインスクリプトはシンプルに仕上げることが出来る。

色々と応用してほしい。

[PR]
by yozda | 2010-11-20 01:54 | プログラミング | Trackback(1) | Comments(2)
トラックバックURL : http://yozda.exblog.jp/tb/11590689
トラックバックする(会員専用) [ヘルプ]
Tracked from ( … > Z_ ̄∂ at 2014-08-24 14:48
タイトル : [VBScript] デバッグ上手はプログラム上手6 ~..
こんにチワワ。どーもボキです。 ' ------------------------------------------------------------------------------- ' デバッグ ※ここだけ抜粋してもOK Dim objDbg ' クラス Class TDebug Dim FCScript ' 初期化処理 Private Sub Class_Initialize() FCScript = InStr...... more
Commented by nobuichi at 2010-11-20 07:46 x
全然、分からんよ。
ま、アレだろアレ。
デバックも要領良くしろよってことだ。
Commented by yozda at 2010-11-20 16:07
そういうこと。
<< [VBScript] デバッグ... [VBScript] デバッグ... >>