Autor Beitrag
maxrus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: 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.
ausblenden 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 user profile iconNarses: Delphi-Tags hinzugefügt
Moderiert von user profile iconNarses: Topic aus Windows API verschoben am Sa 08.10.2011 um 18:31
Horschdware
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 744
Erhaltene Danke: 54

Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Sa 08.10.11 19:01 
user profile iconHorschdware hat folgendes geschrieben Zum zitierten Posting springen:
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 user profile iconNarses: Beiträge zusammengefasst---

user profile iconplatzwart hat folgendes geschrieben Zum zitierten Posting springen:
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 user profile iconNarses: Beiträge zusammengefasst---

Fertiges Programm:
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:
var
  Form1: TForm1;
  Summe, Anzahl_der_Wurfe:integer;

implementation

{$R *.lfm}

{ TForm1 }

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;

// 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.

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Horschdware
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 744
Erhaltene Danke: 54

Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
BeitragVerfasst: Sa 08.10.11 21:05 
user profile iconmaxrus hat folgendes geschrieben Zum zitierten Posting springen:
------->>>>>>>> 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Sa 08.10.11 21:35 
Moderiert von user profile iconNarses: Komplett-Zitat des letzten Beitrags entfernt.

ne das geht leider nicht :(
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 08.10.11 22:10 
user profile iconmaxrus hat folgendes geschrieben Zum zitierten Posting springen:
ne das geht leider nicht :(

Umwerfende Fehlerbeschreibung. :roll: Was sagt der Compiler dazu? Und dann guck dir mal an, wie man eine Zuweisung macht und was ein Vergleich ist. Bitte auch bei Copy and paste den Kopf benutzen.
maxrus Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Sa 08.10.11 22:33 
Moderiert von user profile iconNarses: Komplett-Zitat des letzten Beitrags entfernt.

es gibt kein Fehler, der setzt die Werte einfach nicht auf Null :(
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Sa 08.10.11 23:20 
user profile iconLuckie hat folgendes geschrieben Zum zitierten Posting springen:
Das muss eine Fehler geben! Das dürfte sich noch nicht mal übersetzen lassen, wenn es genauso in deinem Quelltext steht.

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:
var
  Form1: TForm1;
  Summe,w, Anzahl_der_Wurfe:integer;

implementation

{$R *.lfm}

{ TForm1 }

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
  Anzahl_der_Wurfe:=0;
end;

end.

es gibt kein fehler, ich drücke button2 , und es passiert nichts

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Moderiert von user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
Horschdware
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 744
Erhaltene Danke: 54

Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
BeitragVerfasst: 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



BeitragVerfasst: So 09.10.11 03:56 
Dann vergleiche mal, was jetzt in Zeile 30 steht und was du vorher gepostet hast.
maxrus Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: So 09.10.11 10:59 
user profile iconLuckie hat folgendes geschrieben Zum zitierten Posting springen:
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;
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.Button2Click(Sender: TObject);
begin
?????
end;

end.

----->>>> hier hab ich das gemacht!!!
ausblenden 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 user profile iconNarses: Delphi-Tags hinzugefügt

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

user profile iconHorschdware hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: So 09.10.11 13:08 
user profile iconmaxrus hat folgendes geschrieben Zum zitierten Posting springen:

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


>>> www.delphi-library.d...;highlight=crashkurs

_________________
Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
der organist
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 467
Erhaltene Danke: 17

WIN 7
NQC, Basic, Delphi 2010
BeitragVerfasst: So 09.10.11 13:45 
user profile iconHorschdware hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconmaxrus hat folgendes geschrieben Zum zitierten Posting springen:
------->>>>>>>> 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?



user profile iconmaxrus hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconLuckie hat folgendes geschrieben Zum zitierten Posting springen:
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;
procedure TForm1.Button2Click(Sender: TObject);
begin
?????
end;

end.


----->>>> hier hab ich das gemacht!!!
procedure TForm1.Button2Click(Sender: TObject);
begin
Anzahl_der_Wurfe:=0;
end;

end.



---->>>> Verstehe nicht was du meinst!?!??!


Der kleine aber feine Unterschied liegt bei dem Doppelpunkt ohne den es einen Fehler geben muss (!)...

Nebenbei vermute ich mal, dass du in deiner Button2.Click-Prozedur nicht nur die Anzahl der Würfe auf Null setzen solltest, sonder auch die Summe. Denn sonst könnte es dir passieren, dass du nach dem Reset (Button2.Click-Prozedur) einmal neu würfelst, aber schon eine Summe von 23498175872938478732498112400987123467827364 hast. ;)

_________________
»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