Hallo zusammen
Ich mus für die Schule einen Taschenrechner programmieren, ich habe nun mein bestes gegeben aber es gibt immernoch einen oder zwei fehler die ich echt nicht rausbekomm...
der taschenrechner enthält die zahlen 0-9, +, -, *, / sowie die taste C zum leeren der anzeige und ein = symbol. ich kann die tasten 0-9 in die anzeige eintippen, allerdings wenn ich rechnen will kommt immer ein fehler:
wenn ich zB 2 (zahl1) eintippe, und dann auf + drücke, wird die 2 nicht weggelöscht sondern bleibt stehen, wenn ich nun eine zweite zahl eingebe zB 5, nimmt er nicht die 5 als zahl2 sondern die 25, da die 2 immernoch da steht... letztendlich rechnet er 2+25. das ist mein hauptproblem! hier noch er quelltext:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145:
| unit Taschenrechner;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type Operation = (plus,minus,mal,geteilt); TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; Button7: TButton; Button8: TButton; Button9: TButton; Button10: TButton; Button11: TButton; Button12: TButton; Button13: TButton; Button14: TButton; Button15: TButton; Button16: TButton; Button17: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button7Click(Sender: TObject); procedure Button8Click(Sender: TObject); procedure Button9Click(Sender: TObject); procedure Button10Click(Sender: TObject); procedure Button11Click(Sender: TObject); procedure Button12Click(Sender: TObject); procedure Button13Click(Sender: TObject); procedure Button14Click(Sender: TObject); procedure Button15Click(Sender: TObject); procedure Button16Click(Sender: TObject); procedure Button17Click(Sender: TObject); private merk: operation; zahl: double;
public end;
var Form1: TForm1; zahl2 : double;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin if sender=button1 then edit1.text:=Edit1.text+'0'; end;
procedure TForm1.Button2Click(Sender: TObject); begin if sender=button2 then edit1.text:=Edit1.text+'1'; end;
procedure TForm1.Button3Click(Sender: TObject); begin if sender=button3 then edit1.text:=Edit1.text+'2'; end;
procedure TForm1.Button4Click(Sender: TObject); begin if sender=button4 then edit1.text:=Edit1.text+'3'; end;
procedure TForm1.Button5Click(Sender: TObject); begin if sender=button5 then edit1.text:=Edit1.text+'4'; end;
procedure TForm1.Button6Click(Sender: TObject); begin if sender=button6 then edit1.text:=Edit1.text+'5'; end;
procedure TForm1.Button7Click(Sender: TObject); begin if sender=button7 then edit1.text:=Edit1.text+'6'; end;
procedure TForm1.Button8Click(Sender: TObject); begin if sender=button8 then edit1.text:=Edit1.text+'7'; end;
procedure TForm1.Button9Click(Sender: TObject); begin if sender=button9 then edit1.text:=Edit1.text+'8'; end;
procedure TForm1.Button10Click(Sender: TObject); begin if sender=button10 then edit1.text:=Edit1.text+'9'; end;
procedure TForm1.Button11Click(Sender: TObject); begin if sender=button11 then edit1.text:=Edit1.text+','; end;
procedure TForm1.Button12Click(Sender: TObject); begin edit1.text:=''; end;
procedure TForm1.Button13Click(Sender: TObject); begin zahl:=strtofloat(edit1.text); if sender=button13 then merk:=plus; if sender=button14 then merk:=minus; if sender=button15 then merk:=mal; if sender=button16 then merk:=geteilt; end;
procedure TForm1.Button17Click(Sender: TObject); begin zahl2:=strtofloat(edit1.text); case merk of plus: zahl:=zahl+zahl2; minus: zahl:=zahl-zahl2; mal: zahl:=zahl*zahl2; geteilt: zahl:=zahl/zahl2; end; edit1.text:=floattostr(zahl); end;
end. |
Vielen Dank für eure Lösungen!
(PS bitte schreibt nicht so kompliziert ich habe extrem wenig erfahrung in Delphi)
Frohe Weihnachten zusammen
Moderiert von
Narses: Delphi-Tags hinzugefügt