ich bin gerade dabei in Delphi einen Taschenrechner zu programmieren, jedoch macht er nicht ganz das, was ich möchte, was er tun soll (scheiter im Moment schon an Addition und Subtraktion)

Aber naja bevor ich zu viel rede poste ich einfach mal den Quelltext, der für mich eigentlich vom Logischen her richtig erscheint ^^ Wäre nett, wenn ihr mir sagt, was da schief läuft bzw, ob der ganze Ansatz falsch ist. Bitte postet keine komplette Lösung, da will ich selber drauf kommen.
unit Taschenrechner;
// delphi-eigene einstellungen bezüglich der verwendeten objekten
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Display: TEdit;
Taste7: TButton;
Taste8: TButton;
Taste0: TButton;
Taste3: TButton;
Taste6: TButton;
Taste9: TButton;
Taste5: TButton;
Taste2: TButton;
Taste1: TButton;
Taste4: TButton;
TasteKomma: TButton;
TasteMal: TButton;
TasteTeilen: TButton;
TasteMinus: TButton;
TastePlus: TButton;
TasteGleich: TButton;
procedure Taste4Click(Sender: TObject);
procedure Taste0Click(Sender: TObject);
procedure Taste1Click(Sender: TObject);
procedure Taste2Click(Sender: TObject);
procedure Taste3Click(Sender: TObject);
procedure Taste5Click(Sender: TObject);
procedure Taste6Click(Sender: TObject);
procedure Taste7Click(Sender: TObject);
procedure Taste8Click(Sender: TObject);
procedure Taste9Click(Sender: TObject);
procedure TasteKommaClick(Sender: TObject);
procedure TastePlusClick(Sender: TObject);
procedure TasteMinusClick(Sender: TObject);
procedure TasteGleichClick(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
// Variablen für Rechnungen des Rechners
// (gelten über den komplett code)
//
// zahl : sich im display befindene zahl
// zur zeit der rechenanweisung
// x := zahl (zahl = string, x = real)
// zwischenergebnis : variable für zwischenergebnisse
var
zahl : string;
x , zwischenergebnis : real;
{$R *.dfm}
// definiere prozeduren - bei klick auf taste 0-9 und ","
// zahl ins display schreiben, bwz hinzufügen
procedure TForm1.Taste0Click(Sender: TObject);
begin
Display.Text := Display.Text + '0';
end;
procedure TForm1.Taste1Click(Sender: TObject);
begin
Display.Text := Display.Text + '1';
end;
procedure TForm1.Taste2Click(Sender: TObject);
begin
Display.Text := Display.Text + '2';
end;
procedure TForm1.Taste3Click(Sender: TObject);
begin
Display.Text := Display.Text + '3';
end;
procedure TForm1.Taste4Click(Sender: TObject);
begin
Display.Text := Display.Text + '4';
end;
procedure TForm1.Taste5Click(Sender: TObject);
begin
Display.Text := Display.Text + '5';
end;
procedure TForm1.Taste6Click(Sender: TObject);
begin
Display.Text := Display.Text + '6';
end;
procedure TForm1.Taste7Click(Sender: TObject);
begin
Display.Text := Display.Text + '7';
end;
procedure TForm1.Taste8Click(Sender: TObject);
begin
Display.Text := Display.Text + '8';
end;
procedure TForm1.Taste9Click(Sender: TObject);
begin
Display.Text := Display.Text + '9';
end;
procedure TForm1.TasteKommaClick(Sender: TObject);
begin
Display.Text := Display.Text + ',';
end;
// "richtiges" programm beginnt
// Rechenvorgang : Addition
procedure TForm1.TastePlusClick(Sender: TObject);
begin
//der Variable "zahl" wird der inhalt/wert des displays überwiesen
zahl := Display.Text;
//der string "zahl" wird in eine zahl vom real typ umgewandelt
x := StrToFloat(zahl);
//zwischenergebnis wird aktualisiert
zwischenergebnis := zwischenergebnis + x;
//display wird dem zwischenergebnis angepasst (vorher gelöscht)
Display.Clear;
Display.Text := FloatToStr(zwischenergebnis);
end;
// Rechenvorgang : Subtraktion
procedure TForm1.TasteMinusClick(Sender: TObject);
begin
//der Variable "zahl" wird der inhalt/wert des displays überwiesen
zahl := Display.Text;
//der string "zahl" wird in eine zahl vom real typ umgewandelt
x := StrToFloat(zahl);
//zwischenergebnis wird aktualisiert
zwischenergebnis := zwischenergebnis - x;
//display wird dem zwischenergebnis angepasst (vorher gelöscht)
Display.Clear;
Display.Text := FloatToStr(zwischenergebnis);
end;
procedure TForm1.TasteGleichClick(Sender: TObject);
begin
Display.Clear;
Display.Text := FloatToStr(zwischenergebnis);
end;
end.
Dieser Beitrag wurde von Noaki bearbeitet: 12. Dezember 2006 - 21:34