Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Fastscript Funktion mit Objekt Instanz Parameter (https://www.delphipraxis.net/217278-fastscript-funktion-mit-objekt-instanz-parameter.html)

dummzeuch 4. Jun 2025 11:14

Delphi-Version: 5

Fastscript Funktion mit Objekt Instanz Parameter
 
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?

PaPaNi 6. Jun 2025 10:40

AW: Fastscript Funktion mit Objekt Instanz Parameter
 
wird es so auch nicht funktionieren?

Delphi-Quellcode:
res := FScript.CallFunction('CheckInstance', [FCurrentObj]);

jaenicke 6. Jun 2025 11:27

AW: Fastscript Funktion mit Objekt Instanz Parameter
 
Zitat:

Zitat von PaPaNi (Beitrag 1549257)
wird es so auch nicht funktionieren?

Delphi-Quellcode:
res := FScript.CallFunction('CheckInstance', [FCurrentObj]);

Das dürfte eigentlich gar nicht kompilieren. Das sieht eher nach etwas aus, das ChatGPT ausspuckt. Variants unterstützen keine Delphi-Objektreferenzen und die eckigen Klammern passen erst recht nicht.

dummzeuch 6. Jun 2025 11:32

AW: Fastscript Funktion mit Objekt Instanz Parameter
 
Ich hatte auch

Delphi-Quellcode:
res := FScript.CallFunction('CheckInstance', VarArrayOf([Integer(FCurrentObj)]));
ausprobiert. (Also Variant Array statt Variant.)

Aber auch das funktioniert nicht. Wobei FastScript beides gleich behandelt (in den Teil bin ich rein-ge-stept und habe ihn (hoffentlich) auch verstanden, aber weiter wird's mir dann zu konfus).


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz