2008年11月3日月曜日

Pascal Scriptを使ってみた




Delphi Prismの関係でRemObjectsのWEBサイトを見たところPascal Scriptが
Freeと書いてあったのインストール。

Delphi2009にインストールしてみたけど、コンパイルエラーが・・・
内容を良く調べてみるとUnicode化に伴うエラーコードっぽい。

自分の手ではちょっと直しようがないので(パーサー周りポインターが
多くなるのでちょっとつらいかな?)とりあえずDelphi 2007で試用

サンプルは右図のメモにコードを入力して、結果をラベルに表示する簡単なものです。

ソースコードは、こんな感じ。


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, uPSComponent;

type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Label1: TLabel;
PSScript1: TPSScript;
procedure Button1Click(Sender: TObject);
procedure PSScript1Compile(Sender: TPSScript);
private
{ Private declarations }
procedure DsWrite(s: string);
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Self.PSScript1.Script.Assign(Self.Memo1.Lines);
Self.PSScript1.Compile;
Self.PSScript1.Execute;
end;

procedure TForm1.DsWrite(s: string);
begin
Label1.Caption := s;
end;

procedure TForm1.PSScript1Compile(Sender: TPSScript);
begin
Sender.AddMethod(Self,@TForm1.DsWrite, 'procedure Writeln(s: string);');
end;

end.

Pascal ScriptのコンパイラとDelphiのコードを結びつけることができるので
以外に応用範囲が広いかも・・・・

また、上の例ではやってないが、Pascal Scriptでコンパイル済みのストリーム
データの読み書きもできるので、自作のアプリケーションにちょっとした演算を
組み込むには便利かも?

もうちょっと深く突っ込んでみよう。

0 件のコメント: