Delphi-PRAXiS
Seite 5 von 8   « Erste     345 67     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Der HAM-Parser (https://www.delphipraxis.net/59668-der-ham-parser.html)

---Bernhard--- 8. Feb 2006 13:28

Re: Der HAM-Parser
 
Danke, funktioniert Problemlos :)

bg 11 20. Feb 2006 15:57

Re: Der HAM-Parser
 
Liste der Anhänge anzeigen (Anzahl: 1)
kann ich den Parser in mein Delphiprogramm einbauen, sodass ich einfach auf dem Formblatt die Funktion eingebe und diese in eine Funktion übertragen wird, die den passenden Y-Wert der Funktion berechnet?? Ich baue nämlich die numerische Integration (Sehnentrapezregel) in mein Programm als Anhang für ne Facharbeit.. Und das ist nicht so schön, wenn man die Funktion immer in der Unit verändern muss...

Bitte um Hilfe.. Hab mir den Parser angeguckt und hatte keine Ahnung ob, und wie er mir helfen kann.....

Danke

PS: im Anhang mein "Programm"....

bg 11 21. Feb 2006 12:44

Re: Der HAM-Parser
 
Kann mir bitte jemand helfen ?? (siehe letzter Beitrag....)
Ich habe mir den HAM-Parser geholt, komme mit ihm aber nicht klar..

Mit welcher procedure übergibt man die Funktion an den Parser und welche Ausgabe bekomme durch welche Funktionen des Parsers??

Ich bitte um Hilfe!!

Dax 21. Feb 2006 13:01

Re: Der HAM-Parser
 
Heya,

Zitat:

Zitat von bg 11
Mit welcher procedure übergibt man die Funktion an den Parser und welche Ausgabe bekomme durch welche Funktionen des Parsers??

Hast du dir die Demos angesehen? Dem Parser sagst du mit .Expression := Formel, was er zu lösen hat, und mit .Eval löst du das Ding. Eval() gibt eine Referenz auf eine THAMVariable zurück, der Wert der dich interessieren wird ist garantiert .Value (der einzige übrigens).

Variablen und Funktionen, die du in der Formel verwendest, sollten unbedingt im Parser registriert sein, sonst gibt es Fehler.

bis dann

bg 11 21. Feb 2006 13:14

Re: Der HAM-Parser
 
Danke Dax...
Werde ich mal ausprobieren...

Ich habe mir alle Demos mal angeschaut, aber der Umfang und einige Datentypen, die ich nicht kenne, haben mich als "Anfänger" (habe Delphi in Informatik 12 GK in der Schule seit 2 Jahren...) sehr verwirrt...

Danke... mfg

Dax 21. Feb 2006 13:17

Re: Der HAM-Parser
 
Ja, es gibt in der Tat einfachere Parser, die aber genauso gut für deinen Zweck geeignet wären. Einen meine ich im Hier im Forum suchenCQParser von dem hier erkennen zu können ^^

bg 11 22. Feb 2006 15:22

Re: Der HAM-Parser
 
Liste der Anhänge anzeigen (Anzahl: 1)
der rechnet mit komplexen Zahlen.. Ich habe aber keine Ahnung von komplexen Zahlen!!!
In der Beschreibung sagt der Autor, man könne den Parser aber auch für "normale" Funktionen nutzen... Wie das??? Wie kann ich eine Variabele festlegen (zum Beispiel x (ganz einfallsreich)), die ich dann in einer Funktion benutzen kann?? (z.b. 1/(1+x^2))

Kannst du mir helfen den sinnvoll einzubauen???
Hier die neuste Version meines Programms im Anhang....

Alexander 23. Feb 2006 15:03

Re: Der HAM-Parser
 
Auch bei Dizzys Parser liegt ein Beispiel bei. War glaube ich ein Performance Test.
---
So habe es gerade noch mal geöffnet:
In der Demo steht:
Delphi-Quellcode:
  p := TCQParser.Create; //p: TCQParser;
  p.NumberFormat := nfReal;
  p.SetVariable(A, pi2);
  p.Parse(formula); // forumula ist ein String mit der Formel :)

bg 11 23. Feb 2006 15:13

Re: Der HAM-Parser
 
Super!! Danke. werde ich ausprobieren..

Wofür steht A,pi2 ??

dizzy 24. Feb 2006 03:08

Re: Der HAM-Parser
 
Zitat:

Zitat von bg 11
Wofür steht A,pi2 ??

Die 4 Zeilen sind ohne Zusammenhang evtl. etwas verwirrend ;)

Schritt für Schritt:
Delphi-Quellcode:
procedure Foo;
var
  p: TCQParser;
  v: Double;
  e: Double;
begin
  v := 10;
  p := TCQParser.Create; // klar, Parser erstmal instantiieren
  p.NumberFormat := nfReal; // Dem Parser mitteilen, dass er bitte mit normalen Zahlen rechnen soll ;)
  p.RegisterVariable('x', v); // Dem Parser eine Variable 'x' bekannt machen, die den Wert von v enthalten wird.
  // p.SetVariable(...); Ist wie RegisterVariable, aber für bereits damit erzeugte Variablen.
  p.Parse('(20-x)^2'); // Parsed die Formel. D.h. bereitet sie intern aufs's Ausrechnen vor.
  p.Solve(e); // Rechnet die Formel aus, und schreibt das Ergebnis in e. (e=100 hier)
end;
Parse und Solve sind voneinander getrennt, damit es möglich ist die Werte von Variablen nach dem Parsen zu ändern. Das spart bei jeder Änderung eine Menge Rechenzeit, da das Parsen and sich recht viel CPU-Arbeit (Zeit) kostet, die man so nur einmal machen muss.
Der Parser ist somit dafür gerüstet, ein und die selbe Formel in der sich nur Werte ändern, immer und immer wieder zu lösen ohne zu viel Zeit zu verbraten.


Schönen Gruss,
dizzy


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:12 Uhr.
Seite 5 von 8   « Erste     345 67     Letzte »    

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