Autor Beitrag
Vaio
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32

Win XP Home
D7 Prof
BeitragVerfasst: Fr 16.09.05 13:57 
Hallo Leute,
ich habe für die 11. Klasse Informatik gewählt und bin richtig zufrieden damit. Wir arbeiten derzeit mit Delphi 7 und programmieren die bekannten Programme Tag/Nacht-Programm und Ampelprogramm.
Ich habe mich jetzt aber zu Hause mal drangesetzt um so zum Lernen einen Taschenrechner zu programmieren. Ich habe es so weit geschafft, dass ich 2 Edit-Felder genommen habe (a und b). Dabei wird einfach Feld a plus Feld b gerechnet wenn man auf den Button klickt. Das Ergebnis wird dann im 3. Editfeld angezeigt. Ich habe das mit der Subtraktion, Division und Multiplikation ebenfalls gemacht. Aber ich möchte nun nur noch ein Feld benötigen, für die Eingaben und das Ergebnis. Und da komme ich nicht weiter. Ihr müsst wissen das ich erst seit 1er Woche mit Delphi arbeite.

Folgendes habe ich probiert:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Button1Click(Sender: TObject);

  var a, c: Real;
begin
  a := 1;
  edit1.text := floattostr(a);
end;


Aber, das kann ja nicht klappen, denn wenn ich den Button anklicke, wird die 1 angezeigt, aber beim erneuten Klicken erscheint nicht die nächste 1 also 11 dann. Und wenn ich auf die 2 klicke, verschwindet die 1 aus dem Editfeld.

Meine Frage ist jetzt, wie kann ich es so programmieren, dass die Zahlen hintereinander gereiht werden und wie soll ich es dann, zuerst mit der Addition bewerkstelligen?

Ich danke euch schon mal für eure Hilfe!
JayK
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1013



BeitragVerfasst: Fr 16.09.05 14:06 
Hintereinanderreihen:
ausblenden Delphi-Quelltext
1:
edit1.Text := edit1.Text + FloatToStr(a);					
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Fr 16.09.05 14:07 
user profile iconVaio hat folgendes geschrieben:
Hallo Leute,
ich habe für die 11. Klasse Informatik gewählt und bin richtig zufrieden damit. Wir arbeiten derzeit mit Delphi 7 und programmieren die bekannten Programme Tag/Nacht-Programm und Ampelprogramm.
Ich habe mich jetzt aber zu Hause mal drangesetzt um so zum Lernen einen Taschenrechner zu programmieren. Ich habe es so weit geschafft, dass ich 2 Edit-Felder genommen habe (a und b). Dabei wird einfach Feld a plus Feld b gerechnet wenn man auf den Button klickt. Das Ergebnis wird dann im 3. Editfeld angezeigt. Ich habe das mit der Subtraktion, Division und Multiplikation ebenfalls gemacht. Aber ich möchte nun nur noch ein Feld benötigen, für die Eingaben und das Ergebnis. Und da komme ich nicht weiter. Ihr müsst wissen das ich erst seit 1er Woche mit Delphi arbeite.

Folgendes habe ich probiert:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Button1Click(Sender: TObject);

  var a, c: Real;
begin
  a := 1;
  edit1.text := floattostr(a);
end;


Aber, das kann ja nicht klappen, denn wenn ich den Button anklicke, wird die 1 angezeigt, aber beim erneuten Klicken erscheint nicht die nächste 1 also 11 dann. Und wenn ich auf die 2 klicke, verschwindet die 1 aus dem Editfeld.

Meine Frage ist jetzt, wie kann ich es so programmieren, dass die Zahlen hintereinander gereiht werden und wie soll ich es dann, zuerst mit der Addition bewerkstelligen?

Ich danke euch schon mal für eure Hilfe!

ausblenden Delphi-Quelltext
1:
edit1.text := edit1.text + floattostr(a);					
Vaio Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32

Win XP Home
D7 Prof
BeitragVerfasst: Fr 16.09.05 14:36 
Danke. Wie kann ich es jetzt denn mit der Addition machen? Die komplette Zahlenfolge muss ja plus genommen werden mit der Zahlenfolge die danach folgt und das Ergebnis muss im selben Editfeld angezeigt werden. Wie kann ich das bewerkstelligen?
gin2309
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

Win 98; Win XP
D5 Prof, D7 Prof
BeitragVerfasst: Fr 16.09.05 14:44 
Na beim drücken von Plus (wie hast du das? ein Button? Ansonsten bei OnKeyPressed abfangen) speicherst du den Inhalt des edits in einer Variablen
ausblenden Delphi-Quelltext
1:
variable:= StrToFloat(edit1.text);					

Dann lässt du die nächste Zahlenfolge eingeben und beim drücken von = oder + speicherst du die in einer zweiten Variable und dann:
ausblenden Delphi-Quelltext
1:
edit1.text:=FloatToStr(variable1+variable2);					


Moderiert von user profile iconraziel: Delphi-Tags hinzugefügt.
Vaio Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32

Win XP Home
D7 Prof
BeitragVerfasst: Fr 16.09.05 14:52 
Ups, jetzt blicke ich net durch. Ich habe einen Plus-Button erstellt. Was muss ich jetzt genau machen? Muss ich jetzt für "OnClick" etwas programmieren oder für "OnKeyPress"?
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Fr 16.09.05 14:54 
In OnClick kommt jetzt (Pseudo-Code):
ausblenden Plus
1:
Ergebnis = 1. Zahl + 2. Zahl;					

ausblenden Minus
1:
Ergebnis = 1. Zahl - 2. Zahl;					

ausblenden Mal
1:
Ergebnis = 1. Zahl * 2. Zahl;					

ausblenden Geteilt
1:
Ergebnis = 1. Zahl div 2. Zahl;					

Je nachdem, welche Button gedrückt wird.

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
Vaio Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32

Win XP Home
D7 Prof
BeitragVerfasst: Fr 16.09.05 15:13 
GTA-Place so ist mir das natürlich klar, aber wie sieht es dann im Endeffekt in der Programmiersprache aus?
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Fr 16.09.05 15:15 
Eigentlich genau gleich nur halt in Delphi-Form:
ausblenden Plus
1:
2:
Ergebnis   := Zahl1 + Zahl2;
Edit1.Text := FloatToStr(Ergebnis);

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
Vaio Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32

Win XP Home
D7 Prof
BeitragVerfasst: Fr 16.09.05 15:30 
Also, ich weiß das ich was falsch mache, aber ich weiß nicht was genau!?

Wenn ich den Quellcode eingebe kommt der Fehler das Ergebnis ein Undefinierter Bezeichner ist, was auch klar ist, aber ihr müsst mich verstehen, dass ich mich nicht auskenne, aber was muss denn dort jetzt hin?
Benötige ich nur diesen Code um den Befehl auszüführen oder auch Teile von gin2309?
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Fr 16.09.05 15:55 
ausblenden Delphi-Quelltext
1:
2:
3:
var
  Ergebnis:     Real;
  Zahl1, Zahl2: Real;

Ich empfehle dir den Crash-Kurs von Christian.
Hab nur den Link gerade nicht.

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
Pdd
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 142

Win XP
Delphi 7
BeitragVerfasst: Fr 16.09.05 15:56 
Also ich würd es so machen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
var zahl1,zahl2,ergebniss:real;
begin
zahl1:=strtofloat(edit1.text);
zahl2:=strtofloat(edit2.text);
case edit3.text of
'+': ergebniss:=zahl1+zahl2;
'-':ergebniss:=zah11-zahl2;
'*':ergebniss:=zah11-zahl2;
'/':ergebniss:=zah11/zahl2; // bzw. div aber beim ergebniss werden dann die ziffern nach dem komma abgeschnitten!
end;
messagedlg('Das Ergebniss lautet....Tadadada : '+floattostr(ergebniss)+' !',mtinformation,[mbok],0);
end;


probier es aus!

_________________
Wenn alles steht und nix mehr looft, denn isses was von Meikrosooft
Vaio Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32

Win XP Home
D7 Prof
BeitragVerfasst: Fr 16.09.05 16:05 
@Pdd

Dein Code funktioniert leider nicht, da ich nur 1 Editfeld habe und nicht, wie bei deinem Code, 3 Editfelder. Und irgendwie funktioniert der Befehle Case Of nicht -> Ordinaltyp erforderlich
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Fr 16.09.05 16:08 
Du hast wahrscheinlich 10 Button für die Zahlen und 5 für +, -, *, / und =, oder?
So könnte man es am einfachsten erklären dann.

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
Pdd
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 142

Win XP
Delphi 7
BeitragVerfasst: Fr 16.09.05 16:14 
ja dazu musst du natürlich ein drittes editfeld anlegen oder wie soll man sonst das zeichen angeben?

und wegen dem case of...(geht nur bei integer)

ausblenden Delphi-Quelltext
1:
if edit3.text='+' then ergebniss:=zahl1+zahl2;					


und so weiter :D

Moderiert von user profile iconraziel: Delphi-Tags hinzugefügt.

_________________
Wenn alles steht und nix mehr looft, denn isses was von Meikrosooft
Vaio Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32

Win XP Home
D7 Prof
BeitragVerfasst: Fr 16.09.05 16:14 
Stimmt GTA-Place! Ist das denn falsch?
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Fr 16.09.05 16:44 
Ne, das nicht falsch. Das ist sogar ganz gut.

Mh... Ich hab grad hier ne Möglichkeit geschrieben,
doch ich muss mir eine besser überlegen.
Ich werde nachher vielleicht eine hier posten.

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
gin2309
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

Win 98; Win XP
D5 Prof, D7 Prof
BeitragVerfasst: Mo 19.09.05 11:28 
Hab mal schnell ein kleines Programm geschrieben, was deine Grundfunktionen unterstützen sollte. Der Rechner kann natürlich noch nicht die 'Punkt-vor-Strichrechnung-regel',aber ansonsten glaub ich, dass du das so wolltest:

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:
var
  Form1: TForm1;
  zwischenspeicher:real;
  rechenart:char;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  zwischenspeicher:=0;
  rechenart:='+';
end;

procedure TForm1.ButtonPlusClick(Sender: TObject);
begin
  ButtonGleich.Click;
  rechenart:='+';
end;

procedure TForm1.ButtonMinusClick(Sender: TObject);
begin
  ButtonGleich.Click;
  rechenart:='-';
end;

procedure TForm1.ButtonMalClick(Sender: TObject);
begin
  ButtonGleich.Click;
  rechenart:='*';
end;

procedure TForm1.ButtonGeteiltClick(Sender: TObject);
begin
  ButtonGleich.Click;
  rechenart:='/';
end;

procedure TForm1.ButtonGleichClick(Sender: TObject);
begin
  case rechenart of
    '+':edit1.Text:=FloatToStr(zwischenspeicher+StrToFloat(edit1.text));
    '-':edit1.Text:=FloatToStr(zwischenspeicher-StrToFloat(edit1.text));
    '*':edit1.Text:=FloatToStr(zwischenspeicher*StrToFloat(edit1.text));
    '/':edit1.Text:=FloatToStr(zwischenspeicher/StrToFloat(edit1.text));
  end;
  zwischenspeicher:=StrToFloat(edit1.text);                          //Ergebnis in speicher
  edit1.SetFocus;
end;

end.


Moderiert von user profile iconAXMD: Code- durch Delphi-Tags ersetzt
Vaio Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32

Win XP Home
D7 Prof
BeitragVerfasst: So 25.09.05 15:27 
Danke an alle und besonders an gin2309!