Einzelnen Beitrag anzeigen

Benutzerbild von MarquiseDeSade
MarquiseDeSade

Registriert seit: 18. Apr 2007
Ort: Mainz
55 Beiträge
 
Turbo Delphi für Win32
 
#1

Erste Versuche zu Parsen um mit String zu rechnen

  Alt 8. Jun 2007, 15:41
Hallo DP´ler

Eine kurze Beschreibung was ich mir Überlegt habe. Ich möchte einen Taschenrechner so programmieren, dass der User durch klicken auf Buttons willkürliche Rechnungen durchführen kann.

Zum Beispiel:
2+22+4-258*635/741 (Die Eingabe erfolgt über Buttons, sowohl die Zahlen als auch Operatoren)

Nun besteht ja das Problem Punkt vor Strich.

Mein Ansatz:

Delphi-Quellcode:
var
  Form1: TForm1;

  speicher :string;
  plus,minus,mal,geteilt :integer;

...
...
...

{Button für die Rechenarten}
{-----------------------------------------------------------}
procedure TForm1.Button_plusClick(Sender: TObject);

begin
  speicher:=speicher+edit1.text+'+';
  edit1.Text:='';
end;
procedure TForm1.Button_minusClick(Sender: TObject);
begin
  speicher:=speicher+edit1.text+'-';
  edit1.Text:='';
end;
procedure TForm1.Button_malClick(Sender: TObject);

begin
  speicher:=speicher+edit1.text+'*';
  edit1.Text:='';
end;
procedure TForm1.Button_geteiltClick(Sender: TObject);
begin
  speicher:=speicher+edit1.text+'/';
  edit1.Text:='';
end;
{-----------------------------------------------------------}

...
...
...
procedure TForm1.Button_gleichClick(Sender: TObject);

begin
speicher:=speicher+edit1.text;

//Übergabe der Position des Zeichens im String
plus:=pos('+',speicher);
minus:=pos('-',speicher);
mal:=pos('*',speicher);
geteilt:=pos('/',speicher);
Nun zu meinen Problemen:
Ich habe leider erst sehr wenige Grundkenntnisse und ich komme hier nicht weiter. Eigentlich habe ich vor, den String bis zu den jeweiligen Operatoren zu zerlegen und ihn als Integer einer Variable zu übergeben. Pos liefert mir aber nur das erste übereinstimmende Zeichen wieder. Wie löse ich also das Problem, wenn in einem String mehrere Plus-Zeichen auftauchen.
  Mit Zitat antworten Zitat