|
隠れ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で動作を確認しています。 |