unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, PaxCompiler, PaxProgram;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
H_ShowMessage: Integer;
H_S: Integer;
S: AnsiString;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
I: Integer;
PaxCompiler1: TPaxCompiler;
PaxPascalLanguage1: TPaxPascalLanguage;
PaxProgram1: TPaxProgram;
begin
PaxCompiler1 := TPaxCompiler.Create(nil);
PaxPascalLanguage1 := TPaxPascalLanguage.Create(nil);
PaxProgram1 := TPaxProgram.Create(nil);
try
PaxCompiler1.RegisterLanguage(PaxPascalLanguage1);
// register routine ShowMessage
H_ShowMessage := PaxCompiler1.RegisterHeader(0, 'procedure ShowMessage(const Msg: string);');
// register variable S
H_S := PaxCompiler1.RegisterVariable(0, 'S', _typeSTRING);
PaxCompiler1.AddModule('1', PaxPascalLanguage1.LanguageName);
PaxCompiler1.AddCode('1', 'begin');
PaxCompiler1.AddCode('1', ' ShowMessage(S);');
PaxCompiler1.AddCode('1', 'end.');
if PaxCompiler1.Compile(PaxProgram1) then
begin
PaxProgram1.SaveToFile('1.bin');
ShowMessage('Compiled script has been created!');
end
else
for I:=0 to PaxCompiler1.ErrorCount - 1 do
ShowMessage(PaxCompiler1.ErrorMessage[I]);
finally
PaxCompiler1.Free;
PaxPascalLanguage1.Free;
PaxProgram1.Free;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
PaxProgram1: TPaxProgram;
begin
if FileExists('1.bin') and (H_ShowMessage <> 0) and (H_S <> 0) then
begin
PaxProgram1 := TPaxProgram.Create(nil);
try
PaxProgram1.LoadFromFile('1.bin');
PaxProgram1.SetAddress(H_ShowMessage, @ShowMessage);
PaxProgram1.SetAddress(H_S, @S);
PaxProgram1.Run;
finally
PaxProgram1.Free;
end;
end
else
ShowMessage('Press the first button to create compiled script.');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
H_ShowMessage := 0;
H_S := 0;
S := 'Hello';
end;
end.