隠れTcl DLL では前のページの方法でもっと役立つDLLを、 ということで、やっぱり作ってしまいましたとさ。 このDLLは、Visual Basic(VB)やPowerBuilder(PB)から、 Tcl/TkコマンドやTcl/Tkスクリプトファイルを文字列と渡して実行させ、 結果をVBやPBで取得できるようにするDLLです。
● ダウンロード
● VisualBasicでの使い方 Declare Function Etcl_Start Lib "kakuretcl.dll" _ () As Long Declare Function Etcl_End Lib "kakuretcl.dll" _ (ByVal id As Long) As Long Declare Function Etcl_Eval Lib "kakuretcl.dll" _ (ByVal id As Long, ByVal cmd As String, _ ByVal result As String, ByVal maxlen As Long) As Long Declare Function Etcl_EvalFile Lib "kakuretcl.dll" _ (ByVal id As Long, ByVal filename As String, _ ByVal result As String, ByVal maxlen As Long) As Longこのように書いておけば、TclコマンドがVB内部で実行できるようになります。 dim interp, r as long dim result as string interp = Etcl_Start() result = String(256, vbNullChar) r = Etcl_Eval(interp, "expr 3+5", result, 255) if r <> 0 then MsgBox("error:" + result); else MsgBox("result=" + result); end if Etcl_End(interp)なんとなくわかります…よね?よね? Excel97での動作を確認しています。
● PowerBuilderでの使い方 FUNCTION long Etcl_Start () LIBRARY "kakuretcl.dll" FUNCTION long Etcl_End (long id) LIBRARY "kakuretcl.dll" FUNCTION long Etcl_Eval (long id, string cmd, & REF string result, long maxlen) LIBRARY "kakuretcl.dll" FUNCTION long Etcl_EvalFile (long id, string filename, & REF string result, long maxlen) LIBRARY "kakuretcl.dll"と書いておきます。で、 int r long ll_interp string result ll_interp = Etcl_Start() r = Etcl_Eval(ll_interp, "expr 3+5", result, 1023) mle_result.text = result Etcl_End(ll_interp)こんな感じです。PowerBuilderでは、Etcl_EvalとEtcl_EvalFile の4番目の引数はあまり意味をもちません。適当に大きな正の整数を指定してください。 こちらはPowerBuilder 5.0.01と5.0.03で動作を確認しています。 |