AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Mathematischer Parser für komplexe Zahlen + Quaternionen
Thema durchsuchen
Ansicht
Themen-Optionen

Mathematischer Parser für komplexe Zahlen + Quaternionen

Ein Thema von dizzy · begonnen am 5. Mai 2004 · letzter Beitrag vom 5. Mai 2004
Antwort Antwort
Benutzerbild von dizzy
dizzy
Registriert seit: 26. Nov 2003
*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
Angehängte Dateien
Dateityp: zip cqparser09.zip (11,4 KB, 169x aufgerufen)
INSERT INTO HandVonFreundin SELECT * FROM Himmel
 
NicoDE
 
#2
  Alt 5. Mai 2004, 02:12
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;
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

 
Delphi 7 Enterprise
 
#3
  Alt 5. Mai 2004, 12:06
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!
Fabian K.
  Mit Zitat antworten Zitat
shmia

 
Delphi 5 Professional
 
#4
  Alt 5. Mai 2004, 13:06
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
Andreas
  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 03:30 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