Thema: Delphi Taschenrechner Ausgabe

Einzelnen Beitrag anzeigen

safak67

Registriert seit: 22. Mär 2009
87 Beiträge
 
#28

Re: Taschenrechner Ausgabe

  Alt 5. Jun 2009, 12:25
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;