![]() |
Mathematischer Parser für komplexe Zahlen + Quaternionen
Liste der Anhänge anzeigen (Anzahl: 1)
*tädäääää* Hier ist mein erstes größeres Projekt, dass ich der Öffentlichkeit vorstellen möchte.
Die Klasse "TCQParser" kann einen Formel-String lösen, der wahlweise mit komplexen Zahlen oder Quaternionen bestückt ist. Sie kann auch mit ganz normalen double-Zahlen arbeiten, ist darauf hin aber nicht optimiert (nicht so schnell wie es dann ginge). Das Teil arbeitet bei mir unter Delphi 7 sauber. Nun würde mich interessieren, ob es auch bei anderen tut, was es soll. (Für die Delphi 8 - User: Die Unit CQParser benutzt die mitgelieferte Unit "QMath". Ihr solltet das in "QMath2" ändern, da "QMath" Assemblercode enthält.) Alles wichtige zur Benutzung des Parsers steht oben in der "CQParser.pas". Ich freu mich schon auf eure Rückmeldungen! gruss, dizzy |
Re: Mathematischer Parser für komplexe Zahlen + Quaternionen
Laufen beide (mit QMath und QMath2) unter Delphi 6.02 Personal (RTL Update Pack 3)
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Parser: TCQParser; Foobar: TComplex; begin Parser := TCQParser.Create(); with Parser do try Foobar.x := 4; Foobar.y := 2; Parser.Ac := Foobar; ParseC('A'); Foobar := Parser.SolveC(); ShowMessage(IntToStr(Trunc(Foobar.x)) + IntToStr(Trunc(Foobar.y))); finally Free(); end; end; |
Re: Mathematischer Parser für komplexe Zahlen + Quaternionen
Jau! Das ist gut zu wissen. Dann kann ich das ja als getestet mit aufnehmen. Danke dir!
Allerding - wenn du nur eine Variable parst, dann wird QMath(2) garnicht angesprochen, da es ja eigentlich nix zu berechnen gibt... Aber schonmal gut, dass es der Parser an sich tut :) Delphi 8 würde mich noch brennend interessieren! Testet am besten in etwa so:
Delphi-Quellcode:
So kommen eigentlich alle Finessen zum Einsatz.
procedure TForm1.Button1Click(Sender: TObject);
var Parser: TCQParser; Foobar: TComplex; begin Parser := TCQParser.Create(); with Parser do try Foobar.x := 4; Foobar.y := 2; Parser.Ac := Foobar; Foobar.x := 6; Foobar.y := 8; Parser.Bc := Foobar; ParseC('A+sin(B)-2'); Foobar := Parser.SolveC(); ShowMessage(IntToStr(Trunc(Foobar.x)) + IntToStr(Trunc(Foobar.y))); finally Free(); end; end; Danke nochmals! |
Re: Mathematischer Parser für komplexe Zahlen + Quaternionen
Zitat:
In diesem Testprojekt lässt du einige Berechnungen durchführen und vergleichst das Ergebnis mit dem Ergebnis, das du von Hand oder einem fähigen Taschenrechner ermittelt hast. siehe auch ![]() Du könntest auch gleich DUnit verwenden. Dazu gibt es hier ein interessantes Tutorial: ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:50 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 by Thomas Breitkreuz