Autor |
Beitrag |
Vaio
      
Beiträge: 32
Win XP Home
D7 Prof
|
Verfasst: 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:
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
      
Beiträge: 1013
|
Verfasst: Fr 16.09.05 14:06
Hintereinanderreihen:
Delphi-Quelltext 1:
| edit1.Text := edit1.Text + FloatToStr(a); |
|
|
F34r0fTh3D4rk
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Fr 16.09.05 14:07
Vaio 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:
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! |
Delphi-Quelltext 1:
| edit1.text := edit1.text + floattostr(a); |
|
|
Vaio 
      
Beiträge: 32
Win XP Home
D7 Prof
|
Verfasst: 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
      
Beiträge: 16
Win 98; Win XP
D5 Prof, D7 Prof
|
Verfasst: Fr 16.09.05 14:44
|
|
Vaio 
      
Beiträge: 32
Win XP Home
D7 Prof
|
Verfasst: 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
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Fr 16.09.05 14:54
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
Vaio 
      
Beiträge: 32
Win XP Home
D7 Prof
|
Verfasst: 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
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Fr 16.09.05 15:15
Eigentlich genau gleich nur halt in Delphi-Form:
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 
      
Beiträge: 32
Win XP Home
D7 Prof
|
Verfasst: 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
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Fr 16.09.05 15:55
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
      
Beiträge: 142
Win XP
Delphi 7
|
Verfasst: Fr 16.09.05 15:56
Also ich würd es so machen:
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; 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 
      
Beiträge: 32
Win XP Home
D7 Prof
|
Verfasst: 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
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: 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
      
Beiträge: 142
Win XP
Delphi 7
|
Verfasst: 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)
Delphi-Quelltext 1:
| if edit3.text='+' then ergebniss:=zahl1+zahl2; |
und so weiter
Moderiert von raziel: Delphi-Tags hinzugefügt.
_________________ Wenn alles steht und nix mehr looft, denn isses was von Meikrosooft
|
|
Vaio 
      
Beiträge: 32
Win XP Home
D7 Prof
|
Verfasst: Fr 16.09.05 16:14
Stimmt GTA-Place! Ist das denn falsch?
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: 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
      
Beiträge: 16
Win 98; Win XP
D5 Prof, D7 Prof
|
Verfasst: 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:
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); edit1.SetFocus; end;
end. |
Moderiert von AXMD: Code- durch Delphi-Tags ersetzt
|
|
Vaio 
      
Beiträge: 32
Win XP Home
D7 Prof
|
Verfasst: So 25.09.05 15:27
Danke an alle und besonders an gin2309!
|
|