DelphiはBorland社のObject Pascalコンパイラで、 使いやすいGUI開発環境として人気があります。
通常CからTclを呼び出すときはヘッダファイルtcl.hをincludeすることによって Tcl_CreateInterpなどの関数が呼び出せますが、 Delphiにはこのtcl.h相当のものが存在しないので 関数宣言を自分で書いてやる必要があります。
以下の例はBorland C++ 5.5.1でコンパイルしたTcl 8.4.5と Delphi 6 Personalで動作を確認。
// DelphiからTclを呼び出す
// ボタンを押すとボタンのキャプションに '8' と表示
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
type freeProc = procedure(blockPtr: pChar);
type Tcl_Interp = record
result: pChar;
freeProc: freeProc;
errorLine: Integer;
end;
type pTcl_Interp = ^Tcl_Interp;
var
Form1: TForm1;
implementation
{$R *.dfm}
function _Tcl_CreateInterp(): pTcl_Interp; cdecl; external 'tcl84.dll';
function _Tcl_Eval(interp: pTcl_Interp; expr: pChar): Integer; cdecl; external 'tcl84.dll';
function _Tcl_GetStringResult(interp: pTcl_Interp): pChar; cdecl; external 'tcl84.dll';
procedure TForm1.Button1Click(Sender: TObject);
var interp:pTcl_Interp;
begin
interp := _Tcl_CreateInterp();
_Tcl_Eval(interp, 'expr 3 + 5');
Button1.Caption := _Tcl_GetStringResult(interp);
end;
end.
Tslcは上記のようなTclとDelphiとのインターフェイスを もっとDelphiに統合された形で提供してくれる。