-
Forum: Object-Pascal / Delphi-Language
by himitsu,
10. Nov 2009
mathe parser
sind nur'n paar Stichworte für die Suchfunktion
-
Forum: Object-Pascal / Delphi-Language
by himitsu,
23. Okt 2009
für sowas gibt es den Debuger ... da schaut man wo es knallt und auch gleich warum :zwinker:
da fällt dann auf, daß es hier knallt
SL.Delete(i);
SL.Delete(i+1); <<<
die aktuellen Werte sind dai = 3
0: 1
1: +
2: 2
-
Forum: Object-Pascal / Delphi-Language
by himitsu,
23. Okt 2009
Bei deiner Schleife würde i zuerst beim + vorbeikommen und dieses auflösen.
Jetzt aber einfach auf die Idee zu kommen die Schleife rückwärts laufen zu lassen wäre auch eine blöde Idee,
(bevor zu also danfängst darüber nachzudenken)
denn 1*2+3 würde dann wiederum falsch ausgewertet.
du mußt einzelne/mehere Schleifen nacheinander machen ... und zwar für alle Stufen einzeln
-
Forum: Object-Pascal / Delphi-Language
by himitsu,
20. Okt 2009
aus diesem Grund hatte ich bei meinem Code alles getrennt und dort
erst die Vorzeichen +x und -x
dann die Punktrechnungen *, /, DIV und MOD
und erst zum Schluß + und -
berechnen lassen
sonst stimmt die Reihenfolge natürlich nicht.
-
Forum: Object-Pascal / Delphi-Language
by himitsu,
20. Okt 2009
nja, ich hab das ja jetzt erstmal einfach als 'normales' Edit gelöst und da löscht Backspace (in der hochgeladenen Version das letzte Zeichen und alle neuen Zeichen werden hinten angehängt ... und ich meiner internen alktuellen Version wird dieses alles jeweils an der Cursorposition gemacht und dieses (also mitten drinnen was editieren) würde garnicht gehn, wenn man es direkt in den Stack schiebt.
-
Forum: Object-Pascal / Delphi-Language
by himitsu,
19. Okt 2009
OK, bei einer Liveeingabe ist es schon etwas schwerer, aber auch da wäre es mit relativ geringem Aufwand lösbar.
Beim parsen eines ganzen Strings ist es dagegen auch recht einfach ... hab es schießlich auch hier in dem einfachen Code (siehe vorherige Beiträge) mit drinnen :angel:
Noar, wenn du es unbedingt als Liveeingabe haben willst ...
Hier wird übrigens die selbe Rechenfunktion...
-
Forum: Object-Pascal / Delphi-Language
by himitsu,
19. Okt 2009
OK, das geht auch :)
hatte es nur so gelößt, damit man dann auch noch "mod" und Co. einfach nachrüsten kann :angel:
(wie hier unten die Klammern, beim Zerlegen, reingequetscht werden, braucht man nur 'a'..'z', 'A'..'Z' bei den Zahlen reinmachen und hat auch noch Wörter, wie Named-Operators, mit geparst )
ja, das + und - wird doppelt ausgewertet
- einmal als Vorzeichen ganz am Anfang,...
-
Forum: Object-Pascal / Delphi-Language
by himitsu,
19. Okt 2009
jupp, der Code da zerlegt nur den String und setzt ihn am Ende wieder zusammen
For i := 0 to SL.Count - 3 do
If TryStrToFloat(SL, a) and (SL = '*')
and TryStrToFloat(SL, b) Then Begin
SL.Delete(i);
SL.Delete(i);
SL := FloatToStr(a * b);
Goto Loop;
End;
-
Forum: Object-Pascal / Delphi-Language
by himitsu,
18. Okt 2009
bevor ich's noch vergesse ... das höchst geheime Paßwort ist
-
Forum: Object-Pascal / Delphi-Language
by himitsu,
16. Sep 2009
Das Parsen ist recht einfach ... wie es schon genannt wurde, kann man einfach von vorn nach hinten Zeichen für Zeichen durchgehn und sie entsprechend ihrem Typ (Zahl oder Operator) auf ein Array oder eine StringListe aufteilen.
Ein etwas effektiverer Weg mittels Copy steckt in dem ebenfalls schon verlinkten MatheParser, aber die Geschwindigkeit der Einzelzeichenbehandlung ist für diesen Zweck...
-
Forum: Object-Pascal / Delphi-Language
by himitsu,
16. Sep 2009
in XP (SP3) auch nicht
wo kommt denn die andere Antwort plötzlich her?
OK, hab zufällig ihn auch immer auf Wissenschaftlich stehen :angel2:
-
Forum: Object-Pascal / Delphi-Language
by himitsu,
16. Sep 2009
Delphi berechnet nichts.
Im Compiler ist ein Parser, welcher den Quelltext zerlegt und es dann in der EXE sozusagen in der EXE schon richtig zusammengesetzt eingebaut hat.
Da der Parser nur in dem Compiler drin ist, kannst du diesen nicht in der EXE nutzen und mußt dir einen Eigenen bauen (oder einen Fertigen von wo anders verwenden)
-
Forum: Object-Pascal / Delphi-Language
by himitsu,
16. Sep 2009
jupp, um einen Parser kommst du da nicht drumrum
wenn man es nicht all zu Komplex macht unsd sich nur ein einfache Operaionen wie * / + und - beschränkt und keine klammern zuläßt, dann wäre es recht leicht/einfach möglich
z.B.
erstmal alles in seine einzelteile zerlegen und in ein Array damit
1
+
2