da bin ich wieder
Habe sogar von Bäumen heute Nacht geträumt
![Pale](images/smilies/icon_pale.gif)
jedenfalls fiel mir die Lösung Heute Morgen dann plötlich ein
![Laughing](images/smilies/icon_lol.gif)
Nach einigen Fehlschlägen und schusseligkeiten habe ich den Code etwas gekürzt und verschönert - aber das wichtigste er funktioniert (zur Zeit nur +,-,*,/ aber immerhin
![Smile](images/smilies/icon_smile.gif)
)
Falls ich Zeit habe und es irgendwen interessiert, kann ich das fertige Programm kommentieren/ erklären und hier im Software Bereich hochladen.
Die fertige TermToTree funktion sieht nun so aus:
Delphi-Quellcode:
function TMath.TermToTree(pTerm: String): TTree;
var
Baum, tmp: TTree;
begin
Baum := TTree.create;
tmp := TTree.create;
repeat
case pTerm[1] of
'0'..'9': Baum.setContent(Baum.getContent + pTerm[1]);
else begin
case pTerm[1] of
'+','-' : begin
while not (Baum.getRoot = nil) do
Baum := Baum.getRoot;
tmp := TTree.create;
end;
'*','/' : begin
if not (Baum.getRoot = nil)
then
begin
tmp := Baum.getRoot;
tmp.setRightTree(TTree.create);
tmp := tmp.getRightTree;
end;
end
else showmessage('Ungültige Eingabe!');
end;
tmp.setContent(pTerm[1]);
tmp.setLeftTree(Baum);
tmp.setRightTree(TTree.create);
Baum := tmp.getRightTree;
end;
end;
delete(pTerm,1,1);
until pTerm = '';
//hocharbeiten bis zur wurzel und zurückgeben
while not (Baum.getRoot = nil) do
Baum := Baum.getRoot;
result := Baum;
end;
Wenn jemand meine Gedanken nachvollziehen kann und optimierungsvorschläge hat - immer her damit