Term aufsplitten

Anima97

Mitglied
Hey,

ich arbeite zurzeit an einem kleinen Programm, das Polynome symbolisch ableiten kann.
Ich habe mir dazu eine kleine Funktion gebastelt, die einzelne Polynome wie x^2 ableiten tut (also nicht sowas wie -2x^2 + 6x + 8).
Jetzt möchte ich in einer for-Schleife den String mit der mathematischen Funktion aufsplitten und in einzelne Teile zerlegen, d.h. das Programm soll während der Schleife alle Ausdrücke zwischen + und - in ein Array packen.
Aus -2x^2 + 6x + 8 soll dann '-2x^2', '6x' und '8' ausgelesen werden.

Gibt es eine Art split()-Methode in Delphi, mit der man sowas machen kann?
 

oneof6

Mitglied
Hi,

keine Ahnung ob's split gibt, aber auf jeden Fall gibt's die normalen String Operationen.
Was mir jetzt auf die Schnelle einfällt wäre:

- initialisiere ARRAY[]
- den Quellstring ab in nen BUFFER und den nehmen wir für alle folgenden Operationen
- alle Zeichen die als Trenner dienen mit einem anderen Zeichen ersetzen (REPLACE ... vielleicht #)
- loop, solange BUFFER.length > 0
--- Zähler hochzählen (mit For loop direkt im Schleifenkopf)
--- StringPosition = StringPos(BUFFER, Zeichen #)
--- ARRAY[Zähler] = SubString(BUFFER, 0, StringPosition Zeichen #) ACHTUNG: Du musst prüfen ob BUFFER > 0 wenn StringPosition kein Zeichen mehr findet, dann ab mit dem restlichen BUFFER in ARRAY und BUFFER = NULL setzen
--- Delete (BUFFER, 0, StringPosition Zeichen # +1)
- end loop, ARRAY enthält die Teilstücke zwischen den # Zeichen

Das funktioniert aber nur wenn man immer spaces zwischen den echten Operatoren hat " + ", dann kann man nämlich diesen string " + " mit "#" ersetzen und ersetzt nicht aus versehen das Vorzeichen der negativen zwei "-2" mit.