Einfach mathe-Formeln in Delphi berechnen lassen
Hiho,
hab da ma ne kleine Frage, weil ich in dieser Hinsicht bisher noch nix gemacht hab und jetzt son bissel wie der Ochs vorm Berg stehe. :D Ich habe also ein Programm das Daten in einer Art Baumstruktur hinterlegt hat. Jeder Knoten kann dabei eine Formel beinhalten, in denen dann sinngemäß steht "Knoten A - Knoten C". Das Ganze hab ich per Programm so umgewandelt, dass dort jetzt auch Werte drin stehen in einer fertigen mathemathischen Formel, also "5 - 10" (5 = Wert von Knoten A, 10 = Wert von Knoten C). Nur: Wie kann ich Delphi jetzt verklickern mir "5 - 10" zu rechnen, ohne dass ich das mühsam selbst über schleifen programmieren muss? Gibt es da eine Funktion für, die mir dann entsprechend nen Extended-Wert zurück gibt? Danke im Voraus cu Patrick |
Re: Einfach mathe-Formeln in Delphi berechnen lassen
Zitat:
Du brauchst einen mathematischen Parser. Schau mal über die Suchfunktion hier im Forum. Sollten es nur so einfache Formeln sein (Zwei Werte und eine Operation), dann kannst du das evtl. leicht selbst zerlegen und entsprechend berechnen. Du müsstest ja nur die beiden Werte links und rechts von der Operation in zwei Variablen schreiben und z.B. mit einer "case Operator of" Anweisung entsprechend verknüpfen. |
Re: Einfach mathe-Formeln in Delphi berechnen lassen
Hallo Patrick,
ich habe mit folgender Komponente ganz gute Erfahrungen gemacht: http://www.sadmansoftware.com/delphi/freeware/expeval.htm Hans. |
Re: Einfach mathe-Formeln in Delphi berechnen lassen
|
Re: Einfach mathe-Formeln in Delphi berechnen lassen
Danke für die Antworten!
Hab mir jetzt selber ma sone Funktion dafür geschrieben und die scheint - laut ersten Tests - auch zu funktionieren. Klammern usw. kann sie zwar nich, aber das brauch ich auch erst ma nich. *G* @Frog Drittkomponenten versuche ich so weit es geht zu meiden, weil grade bei so kleineren Sachen wie dem hier, möchte ich schon gerne selbst irgendwie die Hand darüber behalten was da so passiert und was nicht. Alleine schon im Sinne der Fehlerbehebung. (Sprich: entweder mit Borland-Hausmitteln realisieren oder halt selber programmieren). Ausserdem war/is das ma ne ganz nette Übung, wenn man sowas in der Art vorher noch nich gemacht hat, aber trotzdem Danke! :) |
Re: Einfach mathe-Formeln in Delphi berechnen lassen
wie wärs damit:
Delphi-Quellcode:
function GetFunktionsWert(Funktion : string;Variable : string; FunktionsWert : extended) : extended;
var position_zeichen : integer; text2, text3, tex6 : string; begin Funktion := trim(Funktion); text2 := copy(Funktion,1,2); text3 := copy(Funktion,1,3); text6 := copy(Funktion,1,6); if pos('+',Funktion) > 0 then begin result := GetFunktionsWert(copy(Funktion,1,pos('+',Funktion) - 1) + GetFunktionsWert(copy(Funktion,pos('+',Funktion) + 1,length(Funktion)); exit; end; if pos('-',Funktion) > 0 then begin result := GetFunktionsWert(copy(Funktion,1,pos('-',Funktion) - 1) - GetFunktionsWert(copy(Funktion,pos('-',Funktion) + 1,length(Funktion)); exit; end; if pos('*',Funktion) > 0 then begin result := GetFunktionsWert(copy(Funktion,1,pos('*',Funktion) - 1) * GetFunktionsWert(copy(Funktion,pos('*',Funktion) + 1,length(Funktion)); exit; end; if pos('/',Funktion) > 0 then begin result := GetFunktionsWert(copy(Funktion,1,pos('/',Funktion) - 1) / GetFunktionsWert(copy(Funktion,pos('/',Funktion) + 1,length(Funktion)); exit; end; if text3 = 'sin' then begin result := sin(GetFunktionsWert(copy(Funktion,4,length(Funktion))); exit; end; if Funktion = Variable then result := FunktionsWert else result := strtofloat(Funktion); end; Diese Funktion, sehr viel Komplexer verwende ich in meinem Funktionsplotter. DU kannst hier noch alle möglichen Sachen einbinden, Klammern usw.. Musst halt nur alles entgegen den Rechenregeln Punkt vor STrich usw. schreiben, da die funktion rekursiv ist. fall du ne komplette fertige DLL haben möchtest, kannst dich bei mir einfach per Mail melden! LG Marco |
Re: Einfach mathe-Formeln in Delphi berechnen lassen
Hallo Patrick,
wenn Du keine Drittkomponenten verwenden willst, dann wäre folgender Algorithmus vielleicht ganz interessant: umgekehrte polnische Notation Damit wäre auch die Klammersetzung erschlagen. Dazu sollte es sicher irgendwelche Beispiel-Implementierungen geben. Hans |
Re: Einfach mathe-Formeln in Delphi berechnen lassen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:33 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