Einzelnen Beitrag anzeigen

Benutzerbild von Delphi-Narr
Delphi-Narr

Registriert seit: 29. Aug 2009
Ort: Duisburg
437 Beiträge
 
Delphi 2007 Professional
 
#20

Re: Term (Zeichenfolge 1+2*3) in Fließkommazahl

  Alt 19. Okt 2009, 12:25
Danke! Also von Schleifen hab ich gehört, klar...
Ich bau das dann mal ein...





Edit:

Delphi-Quellcode:
procedure TForm1.ButtonGleichClick(Sender: TObject);
begin
     Ausgabefeld.text:=ParseandCalc(Rechenfeld.text);
end;

//Hier der Parser

Function TForm1.ParseAndCalc(Const S: String): String;
  Var SL: TStringList;
    i: Integer;

  Begin
    SL := TStringList.Create;
    Try
      Try
        SL.Add('');
        For i := 1 to Length(S) do
          Case S[i] of
            '0'..'9', ',', '.': Begin
              SL[SL.Count - 1] := SL[SL.Count - 1] + S[i];
            End;
            '*', '/', '+', '-': Begin
              If SL[SL.Count - 1] = 'Then Begin
                // eine leere Zeile kommt vor, wenn mehrere Operatoren
                // hintereinander liegen, z.B. bei '1*+2' bzw. '1 * +2'
                SL.Delete(SL.Count - 1);
              End;
              SL.Add(S[i]);
              SL.Add('');
            End;
            ' ': ; // ignoriere Leerzeichen
            Else Raise Exception.CreateFmt('Ungültiges Zeichen "%s" gefunden.', [S[i]]);
          End;

        // hier alles in SL ausrechnen

      Finally
        Result := '';
        For i := 0 to SL.Count - 1 do Result := Result + SL[i];
      End;
    Finally
      SL.Free;
    End;
  End;

Aber wenn ich dann jetzt bspw. 124+2 eingebe steht im Ausgabefeld ebenfalls 124+2 und nicht 126

Könnte das an

Uses StrUtils; liegen? Ich dachte das wäre bei Delphi 5 sysUtils...
  Mit Zitat antworten Zitat