Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Funktionen mit PascalScript auslagern (https://www.delphipraxis.net/148640-funktionen-mit-pascalscript-auslagern.html)

Codewalker 5. Mär 2010 19:48

Re: Funktionen mit PascalScript auslagern
 
Zitat:

Zitat von Wolfgang Mix
Das ist doch kein Script, das ist eine simpelste Funktion!

Ist ja nur ein Beispiel. Das soll quasi im Skript stehen und ich will aus meinem Programm diese Funktion aufrufen können und das Ergebnis erhalten. Das muss doch gehen...

Daniela.S 5. Mär 2010 19:59

Re: Funktionen mit PascalScript auslagern
 
Steht auf der Seite, die wir vorhin verlinkt haben, gaaanz unten.


The component version of Pascal Script also supports execution of scripted functions. This works by using the ExecuteFunction method.
Delphi-Quellcode:
ShowMessage(CompExec.ExecuteFunction([1234.5678, 4321,
                                      'test'],
                                     'TestFunction'));
This will execute the function called 'TestFunction' with 3 parameters, a float, an integer and a string. The result will be passed back to ShowMessage.


In deinem Fall vielleicht so...
Delphi-Quellcode:
Ergebnis := CompExec.ExecuteFunction([],'SagWas'));

Wolfgang Mix 5. Mär 2010 20:26

Re: Funktionen mit PascalScript auslagern
 
Zitat:

Zitat von Daniela.S
@Wolfgang
Mach ich gerne, kann's aber erst am Montag, wenn ich wieder in der Arbeit bin, posten. Hab mir die Arbeit dieses Wochenende mal nicht mit nach Hause genommen :P

Das wäre lieb von Dir

Schönes Wochenende


Wolfgang

Codewalker 6. Mär 2010 13:00

Re: Funktionen mit PascalScript auslagern
 
Das ganze mit ExecuteFunction funktioniert. Das Problem lag woanders: Da in meiner Unit kein begin...end. - Block war, konnte er die Funktion nicht aufrufen. In den Compiler-Optionen muss icAllowNoBegin und icAllowNoEnd gesetzt sein oder der Block eingefügt werden, so dass das Skript dann so aussieht:
Delphi-Quellcode:
function TuWas(): String;
begin
 Result := 'Was';
end;

// Und jetzt der leere Block
begin

end.

Daniela.S 8. Mär 2010 08:29

Re: Funktionen mit PascalScript auslagern
 
Hallo,

wie versprochen hier noch ein Beispiel wie ich eigene Objekte, die auf keine Vorgängerklasse basieren, importiert habe.

Delphi-Quellcode:
procedure TmyObjectValue_Read(Self: TmyObject; var value: string);
begin
  value := Self.MyValue;
end;

procedure TmyObjectValue_Write(Self: TmyObject; const value: string);
begin
  Self.MyValue := value;
end;

procedure RIRegisterMyObjects(Cl: TPSRuntimeClassImporter);
begin
  with Cl.Add( TmyObject ) do begin
    RegisterPropertyHelper( @TmyObjectValue_Read, @TmyObjectValue_Write, 'MyValue' );
    end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:58 Uhr.
Seite 2 von 2     12   

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