Also ich habe es ein bisschen verfeinert.. jetzt berechnet er aber wenn ich mehr als zwei Operanden habe ist das Ergebnis falsch, ich weiß auch wo der fehler ist aber weiß nicht wie ich das korrigieren soll. wenn ich z.B 6-8 * 3+2 eintippe gibt er mir als Ergebnis -10, weil 6-8 als Seg1 nimmt und 3+2 als Seg2. Was muss ich jett ändern und wie muss ich es..?
Delphi-Quellcode:
function TFormTR.BerechneTerm(Formular: string): Double;
var Seg1,Seg2 : double;
index, ipos : integer;
Op : string;
begin
iPos := 0;
index := 0;
while (iPos = 0) and (index < 4) do
begin
case index of
0: Op := 'x';
1: Op := '/';
2: Op := '+';
3: Op := '-';
end;
iPos := Pos(Op, Formular);
inc(index);
end;
if iPos > 0 then
begin
Seg1 := BerechneTerm(copy(Formular,1,iPos - 1));
Seg2 := BerechneTerm(copy(Formular,iPos + 1,length(Formular)));
case index - 1 of
0: Result := Seg1 * Seg2;
1: Result := Seg1 / Seg2;
2: Result := Seg1 + Seg2;
3: Result := Seg1 - Seg2;
end
end
else
begin
Result := StrToFloat(Formular);
end;