Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Mathematischer Parser für komplexe Zahlen + Quaternionen (https://www.delphipraxis.net/21580-mathematischer-parser-fuer-komplexe-zahlen-quaternionen.html)

dizzy 5. Mai 2004 01:27


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

NicoDE 5. Mai 2004 02:12

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;

dizzy 5. Mai 2004 12:06

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:
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;
So kommen eigentlich alle Finessen zum Einsatz.
Danke nochmals!

shmia 5. Mai 2004 13:06

Re: Mathematischer Parser für komplexe Zahlen + Quaternionen
 
Zitat:

Zitat von dizzy
Testet am besten in etwa so

Am Besten, du schreibst ein Testprojekt.
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 Bei Google suchenExtreme AND Programming AND UnitTest

Du könntest auch gleich DUnit verwenden. Dazu gibt es hier ein interessantes Tutorial:
DUnit Tutorial


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:13 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