Autor |
Beitrag |
maxrus
      
Beiträge: 20
|
Verfasst: Sa 08.10.11 18:06
Hallo,
ich wollte ma ein Programm "Würfelsimulator" programmieren, wo es zwei Zahlen ausgegeben werden sollen, die Zahl der erfolgten Würfe und und die Summe der Augen.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm1.FormCreate(Sender: TObject);
begin randomize;
end;
procedure TForm1.Button1Click(Sender: TObject); var Anzahl_der_Wurfe,Summe,k,w:integer; begin Summe:=0; Anzahl_der_Wurfe:=0; k:=Anzahl_der_Wurfe+1;
w:=Random(6)+1; label1.caption:='Wurf Nr'+' '+inttostr(k)+' : ' + inttostr(w); |
das Programm ist noch nicht zu ende geschrieben, aber ich wollte zwischendurch ausprobieren wie das programm denkt, und irgendwie zählt das Programm meine würfe nicht, muss ich dafür eine schleife machen????????
Moderiert von Narses: Delphi-Tags hinzugefügtModeriert von Narses: Topic aus Windows API verschoben am Sa 08.10.2011 um 18:31
|
|
Horschdware
      
Beiträge: 744
Erhaltene Danke: 54
Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
|
Verfasst: Sa 08.10.11 18:41
Anzahl der Würfe ist bei dir in der ButtonClick-Methode deklariert. Sobald diese Methode mit der Verarbeitung fertig ist, get der Wert in der Variable verloren.
(Stichwort: Lebensdauer einer Variablen)
Für deine Zwecke müsste die Variable für die Anzahl der Würfe etwa als Element des Formulars oder gar als globale Variable deklariert werden.
Die Forensuche hilft hier gerne weiter 
_________________ Delphi: XE - OS: Windows 7 Professional x64
|
|
platzwart
      
Beiträge: 1054
Erhaltene Danke: 78
Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
|
Verfasst: Sa 08.10.11 18:57
Naja, schau dir halt an, was du dem Computer sagst - deine Anweisung für den Fall, dass der Button gedrückt wird, lautet: "Setze die Variablen 'Summe' und 'Anzahl_der_Wurfe' auf den Wert '0'". Und nun fragst du, warum der Computer nicht hochzählt. Die Antwort kannst du dir nun selber geben 
_________________ Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
|
|
maxrus 
      
Beiträge: 20
|
Verfasst: Sa 08.10.11 19:01
Horschdware hat folgendes geschrieben : | Anzahl der Würfe ist bei dir in der ButtonClick-Methode deklariert. Sobald diese Methode mit der Verarbeitung fertig ist, get der Wert in der Variable verloren.
(Stichwort: Lebensdauer einer Variablen)
Für deine Zwecke müsste die Variable für die Anzahl der Würfe etwa als Element des Formulars oder gar als globale Variable deklariert werden.
Die Forensuche hilft hier gerne weiter  |
Anzahl der Würfe muss man echt global deklarieren, das hat jetzt geklappt, Danke
--- Moderiert von Narses: Beiträge zusammengefasst---
platzwart hat folgendes geschrieben : | Naja, schau dir halt an, was du dem Computer sagst - deine Anweisung für den Fall, dass der Button gedrückt wird, lautet: "Setze die Variablen 'Summe' und 'Anzahl_der_Wurfe' auf den Wert '0'". Und nun fragst du, warum der Computer nicht hochzählt. Die Antwort kannst du dir nun selber geben  |
bin noch Anfänger,ich weiss ja noch nicht so genau wie das Programm denkt, gibts vllt gute Seiten wo man Delphi Schritt für Schritt kennelernen kann, momentan lerne ich das mit Delphi for Kids, aber ich find das Buch ist nicht wirklich für Kids, die ersten paar Seiten vllt für Kids aber dann ...
--- Moderiert von Narses: Beiträge zusammengefasst---
Fertiges Programm:
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:
| var Form1: TForm1; Summe, Anzahl_der_Wurfe:integer;
implementation
{$R *.lfm}
procedure TForm1.FormCreate(Sender: TObject);
begin randomize; Summe:=0; Anzahl_der_Wurfe:=0;
end;
procedure TForm1.Button1Click(Sender: TObject); var w:integer; begin Anzahl_der_Wurfe:=Anzahl_der_Wurfe+1; w:=Random(20)+1; Summe:=Summe+w; label1.caption:='Wurf Nr'+' '+inttostr(Anzahl_der_Wurfe)+' : ' + inttostr(w); label2.caption:='Summe'+' '+inttostr(Summe);
end;
procedure TForm1.Button2Click(Sender: TObject); begin ????? end;
end. |
Moderiert von Narses: Delphi-Tags hinzugefügt
|
|
Horschdware
      
Beiträge: 744
Erhaltene Danke: 54
Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
|
Verfasst: Sa 08.10.11 21:05
maxrus hat folgendes geschrieben : | ------->>>>>>>> jetzt möchte ich z.B die Werte die ich raus gekriegt habe auf Null setzen, wie mach ich das???
procedure TForm1.Button2Click(Sender: TObject);
begin
?????
end;
end. |
Anzahl_Wuerfe = 0;
vielleicht?
_________________ Delphi: XE - OS: Windows 7 Professional x64
|
|
maxrus 
      
Beiträge: 20
|
Verfasst: Sa 08.10.11 21:35
Moderiert von Narses: Komplett-Zitat des letzten Beitrags entfernt.
ne das geht leider nicht 
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 08.10.11 22:10
|
|
maxrus 
      
Beiträge: 20
|
Verfasst: Sa 08.10.11 22:33
Moderiert von Narses: Komplett-Zitat des letzten Beitrags entfernt.
es gibt kein Fehler, der setzt die Werte einfach nicht auf Null 
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 08.10.11 22:40
Das muss eine Fehler geben! Das dürfte sich noch nicht mal übersetzen lassen, wenn es genauso in deinem Quelltext steht.
|
|
maxrus 
      
Beiträge: 20
|
Verfasst: Sa 08.10.11 23:20
|
|
Horschdware
      
Beiträge: 744
Erhaltene Danke: 54
Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
|
Verfasst: Sa 08.10.11 23:53
Vergisst du etwa, den für "Anzahl_der_Wuerfe" neu gesetzen Wert auch anzuzeigen?
_________________ Delphi: XE - OS: Windows 7 Professional x64
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 09.10.11 03:56
Dann vergleiche mal, was jetzt in Zeile 30 steht und was du vorher gepostet hast.
|
|
maxrus 
      
Beiträge: 20
|
Verfasst: So 09.10.11 10:59
Luckie hat folgendes geschrieben : | Dann vergleiche mal, was jetzt in Zeile 30 steht und was du vorher gepostet hast. |
---->>> Das war meine Frage, ich wollte mit Button2 alle werte auf Null setzen, mir wurde gesagt probiere es mit Anzahl_der_Wurfe:=0;
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| procedure TForm1.Button2Click(Sender: TObject); begin ????? end;
end. |
----->>>> hier hab ich das gemacht!!!
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| procedure TForm1.Button2Click(Sender: TObject); begin Anzahl_der_Wurfe:=0; end;
end. |
---->>>> Verstehe nicht was du meinst!?!??!
Moderiert von Narses: Delphi-Tags hinzugefügt
--- Moderiert von Narses: Beiträge zusammengefasst---
Horschdware hat folgendes geschrieben : | Vergisst du etwa, den für "Anzahl_der_Wuerfe" neu gesetzen Wert auch anzuzeigen? |
aso ja, upssss....ma probieren
joa hat alles geklappt, Danke
|
|
platzwart
      
Beiträge: 1054
Erhaltene Danke: 78
Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
|
Verfasst: So 09.10.11 13:08
_________________ Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
|
|
der organist
      
Beiträge: 467
Erhaltene Danke: 17
WIN 7
NQC, Basic, Delphi 2010
|
Verfasst: So 09.10.11 13:45
_________________ »Gedanken sind mächtiger als Waffen. Wir erlauben es unseren Bürgern nicht, Waffen zu führen - warum sollten wir es ihnen erlauben, selbständig zu denken?« Josef Stalin
|
|
|