![]() |
Funktionen mit PascalScript auslagern
Ich würde gerne einige Funktionen in Skripte auslagern, damit man diese ohne Neukompilierung verändern kann. Die Funktionen haben feste Namen und feste Parameter (Anzahl und Typ). Das ganze würde ich gerne mit PascalScript umsetzen. Hat jemand einen Ansatz oder eine Idee, wie man das realisieren könnte?
|
Re: Funktionen mit PascalScript auslagern
Was spricht denn gegen eine unit?
|
Re: Funktionen mit PascalScript auslagern
Wo hakt es denn?
Weisst Du nicht, wie man eine Methode aus einem Script aufruft? Hier ist ein ![]() |
Re: Funktionen mit PascalScript auslagern
Ich habe gerade Pascal Script in ein Projekt implementiert. Funktioniert sehr gut, allerdings sieht es mit einer Hilfe bzw. Anleitung recht mager aus.
![]() Kompliziert ist es dann erst geworden als ich eigene Klassen eingebunden habe. Hab's aber nach einer Weile hinbekommen... liebe Grüße, Daniela |
Re: Funktionen mit PascalScript auslagern
Zitat:
Allerdings gibt es auch in den Diskussionsgruppen (news.remobjects.com) recht guten Support. |
Re: Funktionen mit PascalScript auslagern
Zitat:
Gruss aus dem kalten Norden Wolfgang |
Re: Funktionen mit PascalScript auslagern
Zitat:
Delphi-Quellcode:
function SagWas: String;
begin Result := 'Test'; end; |
Re: Funktionen mit PascalScript auslagern
Was soll denn da passieren?
|
Re: Funktionen mit PascalScript auslagern
Das ist doch kein Script, das ist eine simpelste Funktion!
|
Re: Funktionen mit PascalScript auslagern
@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 |
Re: Funktionen mit PascalScript auslagern
Zitat:
|
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:
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.
ShowMessage(CompExec.ExecuteFunction([1234.5678, 4321,
'test'], 'TestFunction')); In deinem Fall vielleicht so...
Delphi-Quellcode:
Ergebnis := CompExec.ExecuteFunction([],'SagWas'));
|
Re: Funktionen mit PascalScript auslagern
Zitat:
Schönes Wochenende Wolfgang |
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. |
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 09:23 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