Inhalt einer Variable ausrechnen?

MaXtor

Grünschnabel
Angenommen ich habe eine String-Variable mit dem inhalt
5+455-67*67

Kann ich diese dann irgendwie auf eine einfache art und weise ausrechnen lassen ? Wird sie vielleicht schon ausgerechnet wenn ich sie in Integer umwandle ?

mfg ich :)
 
Hi leute!

Sorry, dass ich nochmal so einen alten Thread aufgreifen muss, aber mich interessiert diese Frage selber, wie man inhalte von variablen ausrechnen kann.

Wenn man wirklich die Zeichen und Zahlen trennen muss, kann dann einer von euch mal posten, wie das ungefähr aussehen muss? Ich hänge jetzt schon länger daran, eine String-Formel in ein Ergebnis umzuwandeln, bisher erfolglos.
Braucht man dafür unzählige Hilfsvariablen oder geht in ein paar Schritten? :confused:

Ich würde mich über Antworten freuen. :)

MfG
 
Junge, junge was de dir da vorgenommen hast kann ne Heidenarbeit werden.
Als erstes würde ich dir empfehlen dich mal mit Regulären Ausdrücken zu beschäftigen. Damit kannst du die Formel sozusagen analysieren.
Dann kannst du die Informationen, die du aus der Formel geholt hast benutzen um das Ergebnis zu berechnen.
Aber schnell geht das nich(wenn du es selber programmieren willst).
Ich habe für einen relativ kompletten Formelinterpreter mit Klammern, beliebigen Operatoren, Funktionen und auch Variablen ne gaanze Menge Code mit viel fehlerquellen gebraucht.
Wenn du nur Plus und Minus und dann auch noch ohne Klammern machen willst, wird es recht einfach. Dann brauchste dir keine Sorgen machen. Sollen aber mehr Features rein wirst um n paar schlaflose Nächte nich drumrum kommen.

Ich wünsch dir jedenfalls viel Spaß.^^


PS: Ich habe eine Baumstruktur zu der Formel aufgebaut. Nur so als Ideenanstoß.
 
Danke erstmal für die Antwort!

Ich habe ja irgendwie gehofft, es gäbe eine einfache Funktion, die das erledigen würde. Schließlich kann das Programm automatisch Real-Variablen addieren, subtrahieren, dividieren, multiplizieren, quattrieren usw, wieso dann nicht eine Formel in ein Ergebnis umwandeln? :(
Ich hab mir gleich gedacht, dass wenn es keine leichte Lösung gibt, sehr sehr viel Arbeit anstehen würde. Andereseits bin ich mit dem Prog schon soweit, dass ich das deswegen nicht aufgeben will. Ich muss wohl eine Möglichkeit finde, dies zu umgehen, denn so viel Zeit habe ich nun wirklich nicht. :)

MfG
 
Ich habe den Thread soeben über Google gefunden. Ich weiß er ist etwas älter, aber mich interessiert es dennoch.

Ich stell mir das ungefähr so vor, angenommen man gibt folgendes ein:
3+4

nun nimmt man Text[1] speicher dies in einer Varibale, meinetwegen x1, also
Code:
x1 := StrToInt(Edit1.Text[1])
Nun nimmt man das dritte Zeichen, die 4,
Code:
x2 := StrToInt(Edit1.Text[3])
Nun addiert man es,
Code:
if (Edit1.Text[2]='+') then x:=x1+x2;
Liege ich da mit meiner Vermutung richtig, oder gibt es einen "eleganteren" Weg?

viele liebe Grüße
 
Im Groben liegst du da schon richtig. Etwas kniffliger wird es, wenn die Position der einzelnen Zeichen im String nicht vorgegeben ist. Denn dann musst du ihn "parsen", d.h. erstmal in die einzelnen Bestandteile (Ziffern und Zeichen) zerlegen.
 

Neue Beiträge

Zurück