unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, PaxCompiler, PaxProgram;
type
TForm1 = class(TForm)
PaxCompiler1: TPaxCompiler;
PaxPascalLanguage1: TPaxPascalLanguage;
PaxProgram1: TPaxProgram;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
type
TMyPoint = packed record
x, y: Integer;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
H_TMyPoint, H_MyPoint: Integer;
MyPoint: TMyPoint;
I: Integer;
begin
MyPoint.X := 60;
MyPoint.Y := 23;
PaxCompiler1.Reset;
PaxCompiler1.RegisterLanguage(PaxPascalLanguage1);
// register host-defined type
H_TMyPoint := PaxCompiler1.RegisterRecordType(0, 'TMyPoint');
PaxCompiler1.RegisterRecordTypeField(H_TMyPoint, 'X', _typeINTEGER);
PaxCompiler1.RegisterRecordTypeField(H_TMyPoint, 'Y', _typeINTEGER);
// register host-defined variable
H_MyPoint := PaxCompiler1.RegisterVariable(0, 'MyPoint', H_TMyPoint, @MyPoint);
PaxCompiler1.AddModule('1', PaxPascalLanguage1.LanguageName);
PaxCompiler1.AddCode('1', 'begin');
PaxCompiler1.AddCode('1', ' MyPoint.Y := 8;');
PaxCompiler1.AddCode('1', 'end.');
if PaxCompiler1.Compile(PaxProgram1) then
begin
PaxProgram1.Run;
ShowMessage(IntToStr(MyPoint.Y));
end
else
for I:=0 to PaxCompiler1.ErrorCount do
ShowMessage(PaxCompiler1.ErrorMessage[I]);
end;
end.