Ich würde gerne folgende Funktion in FastScript realisieren:
Delphi-Quellcode:
// Funktion im Script:
function CheckInstance(Inst: TSomeObject): Boolean;
begin
Result := (Inst.GetValue = 0);
end;
Diese Funktion soll aus meinem Delphi-Programm aufgerufen werden und deshalb wird die TSomeObject-Klasse dort wie folgt definiert:
Delphi-Quellcode:
cl := FScript.AddClass(TSomeObject, 'TObject');
cl.AddMethod('function GetValue: integer', MethodSomeObjectGetValue);
Und wie folgt aufgerufen:
Delphi-Quellcode:
FCurrentObj := TStringList.Create;
res := FScript.CallFunction('CheckInstance', Integer(FCurrentObj));
Ich erwarte jetzt eigentlich, dass beim Auruf von MethodSomeObjectGetValue der Instance-Parameter den Wert FCurrentObj enthält, er ist aber NIL:
Delphi-Quellcode:
function TMyStript.MethodSomeObjectGetValue(_Instance: TObject; _ClassType: TClass;
const _MethodName: string; _Caller: TfsMethodHelper): Variant;
begin
// function GetValue: integer
Assert(Integer(_Instance) = Integer(FCurrentObj), 'ungueltiger Instance-Wert');
// .... weiterer Code
end;
Irgendwas mache ich falsch, vermutlich bei der Parameterübergabe. Aber was?