- Код: Выделить всё
program project1;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}
cthreads,
{$ENDIF}
Classes,
uPSCompiler,
uPSRuntime,
uPSC_std,
uPSC_classes,
uPSR_std,
uPSR_classes;
const
Script = 'begin TStringList.Create; end.';
var
Compiler: TPSPascalCompiler;
Exec: TPSExec;
Data: string;
CI: TPSRuntimeClassImporter;
function ScriptOnUses(Sender: TPSPascalCompiler; const Name: string): Boolean;
begin
if Name = 'SYSTEM' then
begin
SIRegister_std(Sender);
SIRegister_classes(Sender,false);
Result := True;
end else
Result := False;
end;
begin
Compiler:=TPSPascalCompiler.Create;
Compiler.OnUses:=@ScriptOnUses;
if not Compiler.Compile(Script) then begin
Compiler.Free;
Exit;
end;
Compiler.GetOutput(Data);
Compiler.Free;
CI:=TPSRuntimeClassImporter.Create;
RIRegister_Std(CI);
RIRegister_Classes(CI,false);
Exec := TPSExec.Create;
RegisterClassLibraryRuntime(Exec,CI);
if not Exec.LoadData(Data) then begin
Exec.Free;
Exit;
end;
Exec.RunScript;
writeLn(TIFErrorToString(Exec.ExceptionCode,Exec.ExceptionString));
Exec.Free;
CI.Free;
end.
Делал точь-в-точь по примерам. Аналогичная программа, скомпилированная в Delphi 2007 исполняет скрипт без ошибок. Куда стоит копать?