Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Taschenrechner
GoodLouG - Mi 23.12.09 15:41
Titel: Taschenrechner
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:
Delphi-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
Hidden - Mi 23.12.09 16:10
Hi, und :welcome: im Delphi-Forum :)
Weißt du, was dein Quelltext macht? :gruebel: Du gibst explizit ide Anweisung, den Text jeweils hinten an den Alten dranzuhängen. Wenn du den nicht übernehmen willst, muss es ed1.Text := S; anstelle von ed1.Text := edd1.Text + S; heißen.
Warum überprüfst du beim Aufrufen der Buttonklick-Prozeduren eigentlich jedes Mal, ob es sich auch um den Sender handelt? Du wirst die Prozedur doch nur dort eingetragen haben, oder kopierst du die Komponenten mit Strg-C? Die würde ich jedes Mal rechts aus der Objektleiste aufs Formular ziehen :)
mfG,
PS: Du solltest dir angewöhnen, deine Komponenten zu benennen(im ObjectInspector). Nimm dir dazu ruhig etwas Zeit und suche einen Namen, der sofort verstehen lässt, was der Button macht.
JoelH - Mi 23.12.09 16:50
erweitere Button13Click um die Zeile
das sollte reichen.
GoodLouG - Mi 23.12.09 17:54
Hey vielen Dank für die schnellen Antworten.
Habe jetz edit1.text:=''; bei Button13Click zugefügt, bei den anderen funktionen auch.
allerdings wenn ich jetz +,-,* oder / will kommt die Fehlermeldung
'' ist kein gültiger Gleitkommawert
wie kann ich das beheben?
mfg
GoodLouG - Mi 23.12.09 18:02
habe es nun hinbekommen, hatte es in der falschen zeile!
vielen dank an euch, und schöne weihnachten
Hidden - Mi 23.12.09 18:15
GoodLouG hat folgendes geschrieben : |
| vielen dank an euch, und schöne weihnachten |
Dir auch :)
Wieso überprüfst du denn jetzt jeweils nochmal, ob es sich um den Korrekten Sender handelt? Dein Quelltext könnte doppelt so übersichtlich sein ;)
mfG,
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!