Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Mehrere Zahlen berechnen / Delphi
Hannoi - Mo 08.11.10 11:33
Titel: Mehrere Zahlen berechnen / Delphi
Hallo Leute,
ich habe eine frage zu Delphi. Ich habe einen Taschenrechner programmiert. Zurzeit kann er aber leider nur 2 Zahlen berechnen. Ich würde ihm nun gerne sagen, dass er x-viele Zahlen zusammenrechnen kann. Wo muss ich was eingeben?
Lg Hannoi
Gausi - Mo 08.11.10 11:36
Hallo und :welcome: in der Entwickler-Ecke,
Da musst du wohl in Zeile 42 eine Schleife einbauen. ;-)
Im Ernst: Wie sieht denn dein Code für zwei Zahlen aus, und wie lässt du die Werte vom User eingeben?
Hannoi - Mo 08.11.10 11:41
Also, die Operatoren werden über Buttons eingegeben.
Das ist einmal der Code. Alle Buttons sind beschriftet und so sollte es zu versthen sein hoffe ich.
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: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: 230: 231: 232: 233: 234: 235: 236: 237: 238: 239: 240: 241: 242: 243: 244: 245: 246: 247: 248: 249: 250: 251: 252: 253: 254: 255: 256: 257: 258: 259: 260: 261: 262: 263: 264: 265: 266: 267: 268: 269: 270: 271: 272: 273: 274: 275: 276: 277: 278:
| unit Rechenprogramm;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Menus;
type TForm1 = class(TForm) edt_1: TEdit; btn_gleich: TButton; btn_plus: TButton; btn_minus: TButton; btn_mal: TButton; btn_geteilt: TButton; btn_n0: TButton; btn_n1: TButton; btn_n2: TButton; btn_n3: TButton; btn_n4: TButton; btn_n5: TButton; btn_n6: TButton; btn_n7: TButton; btn_n8: TButton; btn_n9: TButton; btn_clear: TButton; btn_cUnten: TButton; btn_punkt: TButton; MainMenu1: TMainMenu; Datei1: TMenuItem; Schlieen1: TMenuItem; edt_2: TEdit; btn_close: TButton; btn_cOben: TButton; procedure btn_gleichClick(Sender: TObject); procedure btn_minusClick(Sender: TObject); procedure btn_plusClick(Sender: TObject); procedure btn_malClick(Sender: TObject); procedure btn_geteiltClick(Sender: TObject); procedure btn_n1Click(Sender: TObject); procedure btn_n0Click(Sender: TObject); procedure btn_n2Click(Sender: TObject); procedure btn_n3Click(Sender: TObject); procedure btn_n4Click(Sender: TObject); procedure btn_n5Click(Sender: TObject); procedure btn_n6Click(Sender: TObject); procedure btn_n7Click(Sender: TObject); procedure btn_n8Click(Sender: TObject); procedure btn_n9Click(Sender: TObject); procedure btn_clearClick(Sender: TObject); procedure btn_cUntenClick(Sender: TObject); procedure btn_punktClick(Sender: TObject); procedure edt_1Change(Sender: TObject); procedure edt_1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Schlieen1Click(Sender: TObject); procedure edt_2Change(Sender: TObject); procedure btn_closeClick(Sender: TObject); procedure btn_cObenClick(Sender: TObject);
private public str_operator: string; f_zahl1: real; end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btn_gleichClick(Sender: TObject); var zahl1, zahl2, ergebnis: real; begin zahl2 := StrToFloat (edt_1.Text); if str_operator <> '' then begin if str_operator = '+' then ergebnis := f_zahl1 + zahl2; if str_operator = '-' then ergebnis := f_zahl1 - zahl2; if str_operator = '*' then ergebnis := f_zahl1 * zahl2; if str_operator = '/' then ergebnis := f_zahl1 / zahl2;
edt_1.Text := FloatToStr(ergebnis); str_operator := ''; end; end;
procedure TForm1.btn_plusClick(Sender: TObject); begin edt_2.Text := edt_1.Text; str_operator := '+'; f_zahl1 := StrToFloat(edt_1.Text); edt_1.Text := ''; btn_punkt.Enabled := true ; edt_1.SetFocus; end;
procedure TForm1.btn_punktClick(Sender: TObject); begin edt_1.text := edt_1.text + ','; btn_punkt.Enabled := false ; edt_1.SetFocus; end;
procedure TForm1.btn_closeClick(Sender: TObject); begin close; end;
procedure TForm1.edt_1Change(Sender: TObject); begin edt_1.SetFocus; end;
procedure TForm1.edt_1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key = VK_Return then btn_gleich.Click; end;
procedure TForm1.edt_2Change(Sender: TObject); begin edt_1.SetFocus; end;
procedure TForm1.Schlieen1Click(Sender: TObject); begin close; end;
procedure TForm1.btn_minusClick(Sender: TObject); begin edt_2.Text := edt_1.Text; str_operator := '-'; f_zahl1 := StrToFloat(edt_1.Text); edt_1.Text := ''; btn_punkt.Enabled := true ; edt_1.SetFocus; end;
procedure TForm1.btn_n0Click(Sender: TObject); begin edt_1.text := edt_1.text + '0'; edt_1.SetFocus; end;
procedure TForm1.btn_n1Click(Sender: TObject); begin edt_1.text := edt_1.text + '1'; edt_1.SetFocus; end;
procedure TForm1.btn_n2Click(Sender: TObject); begin edt_1.text := edt_1.text + '2'; edt_1.SetFocus; end;
procedure TForm1.btn_n3Click(Sender: TObject); begin edt_1.text := edt_1.text + '3'; edt_1.SetFocus; end;
procedure TForm1.btn_n4Click(Sender: TObject); begin edt_1.text := edt_1.text + '4'; edt_1.SetFocus; end;
procedure TForm1.btn_n5Click(Sender: TObject); begin edt_1.text := edt_1.text + '5'; edt_1.SetFocus; end;
procedure TForm1.btn_n6Click(Sender: TObject); begin edt_1.text := edt_1.text + '6'; edt_1.SetFocus; end;
procedure TForm1.btn_n7Click(Sender: TObject); begin edt_1.text := edt_1.text + '7'; edt_1.SetFocus; end;
procedure TForm1.btn_n8Click(Sender: TObject); begin edt_1.text := edt_1.text + '8'; edt_1.SetFocus; end;
procedure TForm1.btn_n9Click(Sender: TObject); begin edt_1.text := edt_1.text + '9'; edt_1.SetFocus; end;
procedure TForm1.btn_malClick(Sender: TObject); begin edt_2.Text := edt_1.Text; str_operator := '*'; f_zahl1 := StrToFloat(edt_1.Text); edt_1.Text := ''; btn_punkt.Enabled := true ; edt_1.SetFocus; end;
procedure TForm1.btn_cUntenClick(Sender: TObject); begin edt_1.Text := ''; btn_punkt.Enabled := true ; edt_1.SetFocus; end;
procedure TForm1.btn_cObenClick(Sender: TObject); begin edt_2.Text := ''; btn_punkt.Enabled := true ; edt_1.SetFocus; end;
procedure TForm1.btn_clearClick(Sender: TObject); begin str_operator := ''; f_zahl1 := 0; edt_1.Text := ''; edt_2.Text := ''; btn_punkt.Enabled := true ; edt_1.SetFocus; end;
procedure TForm1.btn_geteiltClick(Sender: TObject); begin edt_2.Text := edt_1.Text; str_operator := '/'; f_zahl1 := StrToFloat(edt_1.Text); edt_1.Text := ''; btn_punkt.Enabled := true ; edt_1.SetFocus; end;
end. |
Lg Hannoi
Moderiert von
Gausi: Delphi-Tags hinzugefügt
Tranx - Mo 08.11.10 12:40
Gute Frage. Soweit ich es verstanden habe, sollen mehrere Zahlen zusammengezählt (addiert) werden. Wenn das so ist, kannst Du ja einfach das Edit-Feld, in dem die Zahlen eingegeben werden, die Du addieren willst, durch ein List-Feld ersetzen, in das Du alle Zahlen nacheinander einträgst und anschließend drückst nur auf die Gleich-Taste und die Zahlen werden addiert. Dann musst Du nur die Prodezuren für die Gleich-Taste ändern.
Allerdings benötigst Du dann eigentlich die Tasten 0 - 9 etc gar nicht, weil die Verwaltung in TList komplizierter würde, oder Du behältst alles so bei, wie bisher und fügst eine "Taste" hinzu, mit der Du die aktuelle Zahl im Editfeld in das Listfeld hinzufügst und eine, mit der Du eine Zahl im Listfeld wieder löschen kannst.
Das Ganze funktioniert in einfacher Weise leider nur bei gleichen Operationen, also werde Klammern, verschachtelten Rechnungen etc. Dann wird es schwieriger.
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!