Autor Beitrag
Hannoi
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Mo 08.11.10 11:33 
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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: 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?

_________________
We are, we were and will not be.
Hannoi Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: 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.

ausblenden volle Höhe 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 frm_onkeydown(Sender: TObject; var Key: Word; Shift: TShiftState);
    //procedure btn_n4KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    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
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    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
  // aus den Eingabe-Feldern in die Variablen umspeichern
  zahl2 := StrToFloat (edt_1.Text);
  //zahl2 := StrToFloat (edt_2.Text);
  // Berechnung des Ergebnisses
  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.frm_onkeydown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 if Key = VK_RETURN then
   btn_gleich.Click;
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_n4KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_RETURN then
   btn_gleich.Click;
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 user profile iconGausi: Delphi-Tags hinzugefügt
Tranx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 648
Erhaltene Danke: 85

WIN 2000, WIN XP
D5 Prof
BeitragVerfasst: 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.

_________________
Toleranz ist eine Grundvoraussetzung für das Leben.