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...