![]() |
Problem mit importierter Funktion aus PascalScript
Hi zusammen!
Ich versuche derzeit mit PascalScript ein Pascalprogramm aus unserem Mathebuch ein wenig flexibler zu gestalten und habe deswegen zwei wichtige Funktionen in eine ScriptDatei ausgelagert:
Delphi-Quellcode:
Erstere Funktion liefert für x den passenden Funktionswert und die zweite liefert einfach einen Beschreibungsstring der Funktion.
function F(x:Single):Single;
begin Result:=x*(x*x-4)+1; end; function GetDescription:String; begin Result:='f:x->x^3-4*x+1'; end; Jetzt hab ich die Funktionen mit TPSScript.OnVerifyProc importiert und feststellen müssen, dass es im "Tutorial" auf der ![]() Die zweite Funktion läuft ohne Probleme, doch bei der ersten bekomm ich eine 'Invalid floating point operation', sobald ich sie aufrufe... Meine Vermutung ist jetzt, dass es an dem fehlenden aExport liegt... :gruebel: Hier noch der wichtigste Code, falls es doch an mir scheitert :mrgreen: :
Delphi-Quellcode:
Ich hoff mal, ihr wisst ne Lösung... :gruebel:
type
TF=function(x:Single):Single of object; TGetDescription=function:String of object; procedure TMainForm.ScriptVerifyProc(Sender: TPSScript; Proc: TPSInternalProcedure; const Decl: string; var Error: Boolean); begin if Proc.Name = 'F' then begin if not ExportCheck(Sender.Comp, Proc, [btSingle, btSingle], [pmIn]) then begin Sender.Comp.MakeError('', ecCustomError, 'Funktionskopf von F stimmt nicht mit F(x:Single):Single überein.'); Error := True; end else begin // Proc.aExport := etExportDecl; Error := False; end; end else if Proc.Name = 'F' then begin if not ExportCheck(Sender.Comp, Proc, [btString], []) then begin Sender.Comp.MakeError('', ecCustomError, 'Funktionskopf von GetDescription stimmt nicht mit GetDescription:String überein.'); Error := True; end else begin Error:=FALSE; end; end else Error := False; end; //Hier noch das wichtigste des OnClick-Events vom StartButton procedure TMainForm.ComputeClick(Sender:TObject); var F:TF; GetDescription:TGetDescription; a,b,m,e:Single; begin //Script ist die TPSScript Komponente if Script.Compile then begin F:=TF(Script.GetProcMethod('F')); if @F=NIL then begin ShowMessage('Funktion F(x:Single):Single konnte nicht importiert werden'); Exit; end; GetDescription:=TGetDescription(Script.GetProcMethod('GetDescription')); if @GetDescription=NIL then begin ShowMessage('Funktion GetDescription:String konnte nicht importiert werden'); Exit; end; //Hier hab ich ein paar Typkonvertierungen mal weggelassen ;) repeat if F(a)*F(m)<=0 then //<--- Hier die Exception b:=m else a:=m; Application.ProcessMessages; until Abs(F(m))<e; //auch die Ausgabe der Werte hab ich mir jetzt mal gespart :D end; end; PS: Es geht um den Nullstellensatz bezüglich globalen Aussagen bei Funktionen (Infinitesimalrechnung, 11. Klasse) :zwinker: |
Re: Problem mit importierter Funktion aus PascalScript
24h sind um... d.h. *PUSH*
Ich hab auch mal in der Newsgroup von RemObjects nachgeschaut... entweder es steht tatsächlich nichts drin, oder ich bin zu dumm zum Lesen :mrgreen: |
Re: Problem mit importierter Funktion aus PascalScript
Hi "Weltraumreisender",
probiers doch mal mit ![]() Zu PascalScript kann ich Dir nicht helfen, aber mit DWS bin ich sehr zufrieden. |
Re: Problem mit importierter Funktion aus PascalScript
Danke für den Tipp... das hat das Problem 1a gelöst und der Code ist um einige Zeilen leichter geworden :mrgreen:
(Und die Dokumentation ist auch besser :zwinker: ) Edit: Musste nur während der Packageinstallation ein bissl was auskommentieren... |
Re: Problem mit importierter Funktion aus PascalScript
Und ?
wie ist das Laufzeitverhalten ? respektive die Geschwindigkeit ? |
Re: Problem mit importierter Funktion aus PascalScript
Man kann sich eigentlich nicht beschweren... seinen Zweck erfüllt's... die aufwendigeren Sachen wie Graph zeichnen (sollte ich überhaupt etwas in der Richtung einbauen... :zwinker: ) würde ich eh Hardcoden... Aber auf jeden Fall noch mal Danke für den Hinweis :thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:56 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