AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Problem mit importierter Funktion aus PascalScript
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit importierter Funktion aus PascalScript

Ein Thema von JamesTKirk · begonnen am 3. Feb 2006 · letzter Beitrag vom 6. Feb 2006
Antwort Antwort
Benutzerbild von JamesTKirk
JamesTKirk

Registriert seit: 9. Sep 2004
Ort: München
604 Beiträge
 
FreePascal / Lazarus
 
#1

Problem mit importierter Funktion aus PascalScript

  Alt 3. Feb 2006, 15:07
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:
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;
Erstere Funktion liefert für x den passenden Funktionswert und die zweite liefert einfach einen Beschreibungsstring der Funktion.

Jetzt hab ich die Funktionen mit TPSScript.OnVerifyProc importiert und feststellen müssen, dass es im "Tutorial" auf der RemObjects Homepage eine Eigenschaft bei TPSInternalProcedure gibt, die bei mir nicht existiert; nämlich TPSInternalProcedure.aExport und das dazugehörige etExportDecl.

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...

Hier noch der wichtigste Code, falls es doch an mir scheitert :

Delphi-Quellcode:
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 = 'Fthen 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 = 'Fthen 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;
Ich hoff mal, ihr wisst ne Lösung...

PS: Es geht um den Nullstellensatz bezüglich globalen Aussagen bei Funktionen (Infinitesimalrechnung, 11. Klasse)
Sven
[Free Pascal Compiler Entwickler]
this post is printed on 100% recycled electrons
  Mit Zitat antworten Zitat
Benutzerbild von JamesTKirk
JamesTKirk

Registriert seit: 9. Sep 2004
Ort: München
604 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Problem mit importierter Funktion aus PascalScript

  Alt 4. Feb 2006, 15:54
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
Sven
[Free Pascal Compiler Entwickler]
this post is printed on 100% recycled electrons
  Mit Zitat antworten Zitat
kalmi01
(Gast)

n/a Beiträge
 
#3

Re: Problem mit importierter Funktion aus PascalScript

  Alt 4. Feb 2006, 16:55
Hi "Weltraumreisender",

probiers doch mal mit DelphiWebScript

Zu PascalScript kann ich Dir nicht helfen, aber mit DWS bin ich sehr zufrieden.
  Mit Zitat antworten Zitat
Benutzerbild von JamesTKirk
JamesTKirk

Registriert seit: 9. Sep 2004
Ort: München
604 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Problem mit importierter Funktion aus PascalScript

  Alt 4. Feb 2006, 23:39
Danke für den Tipp... das hat das Problem 1a gelöst und der Code ist um einige Zeilen leichter geworden

(Und die Dokumentation ist auch besser )

Edit: Musste nur während der Packageinstallation ein bissl was auskommentieren...
Sven
[Free Pascal Compiler Entwickler]
this post is printed on 100% recycled electrons
  Mit Zitat antworten Zitat
kalmi01
(Gast)

n/a Beiträge
 
#5

Re: Problem mit importierter Funktion aus PascalScript

  Alt 5. Feb 2006, 18:02
Und ?
wie ist das Laufzeitverhalten ?
respektive die Geschwindigkeit ?
  Mit Zitat antworten Zitat
Benutzerbild von JamesTKirk
JamesTKirk

Registriert seit: 9. Sep 2004
Ort: München
604 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Problem mit importierter Funktion aus PascalScript

  Alt 6. Feb 2006, 19:41
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... ) würde ich eh Hardcoden... Aber auf jeden Fall noch mal Danke für den Hinweis
Sven
[Free Pascal Compiler Entwickler]
this post is printed on 100% recycled electrons
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:53 Uhr.
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