Autor Beitrag
Sim
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Sa 25.01.03 12:05 
Habe mir mal in Delphi 3 ein kleines Rateprogramm geschrieben und habe aber ein Problem:
--------------------------------------------------------------------------------------
ausblenden volle Höhe 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:
const Max = 12; //12 Versuche hast du bereit...
var
  Form1: TForm1;
  Eingabe, Zufall, Versuche: Integer;
  SpielEnde: Boolean;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
try
  if SpielEnde then Close;
  Edit1.SetFocus; //Setfocus bedeuted dass Das Eingabefeld Edit1 beim Start automatisch angewählt wird...
  Eingabe := StrToInt (Edit1.Text); // := ist eine Zuweisung, Eingabe und Zufall sind Variabeln
  inc (Versuche);
  if Versuche <= Max then
  Label2.Caption := IntToStr (Versuche) + '. Versuch:'
  else
  Label2.Caption := 'Du hast mehr als 12 Versuche gebraucht... schlecht!';
  if Eingabe = Zufall then
  Label1.Caption := 'Richtig geraten...';
  if Eingabe < Zufall then
  Label1.Caption := 'Die Zahl ist grösser';
  if Eingabe > Zufall then
  Label1.Caption := 'Die Zahl ist kleiner';
  if (Eingabe = Zufall) or (Versuche > Max) then
  Button1.Caption := 'Ende';
  begin
  Button1.Caption := 'Ende';
  SpielEnde := true;
  end;
except
  Label1.Caption := 'Nur zwischen 1 und 1000';
end;

end;
procedure TForm1.FormCreate(Sender: TObject);
begin
  randomize;
  Zufall := random(1000) +1;
  Versuche := 1;
  SpielEnde := false;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 Edit1.SetFocus;
 Label1.Caption := 'Ich denke mir eine neue Zahl!';
 Label2.Caption := 'Rate mal schön weiter!';
 Button1.Caption := 'OK';
 Zufall := random(1000) +1;
 Versuche := 1;
 Spielende := false;
end;

end.

--------------------------------------------------------------------------------------
Immer wenn ich den ersten Rateversuch gemacht habe wird aus dem Ok-Button, dass is der Button1.Caption ein End-Button!?!?
Warum???
Danke für die hilfe...

Moderiert von user profile iconKlabautermann: Code-Tags hizugefügt
Brueggendiek
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 304

Win 98, Win98SE, Win XP Home
D5 Std
BeitragVerfasst: Sa 25.01.03 14:46 
Hallo Sim!

Willkommen im Forum!

Was soll denn das werden?
Sim hat folgendes geschrieben:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
  if (Eingabe = Zufall) or (Versuche > Max) then
  Button1.Caption := 'Ende';
  begin
  Button1.Caption := 'Ende';
  SpielEnde := true;
  end;

Der begin - end - Block wird so immer durchlaufen und damit der Button umgetextet.
Vermutlich ist die erste Zeile nach dem IF - THEN flüssiger als Wasser, nämlich überflüssig!

Nach dem "then" ist genau eine Anweisung zugelassen - entweder eine Einzelanweisung oder eine mit "begin" und "end" geklammerte Verbundanweisung.

Allerdings ist es nicht verboten, irgendwo z.B. aus optischen Gründen mehrere Anweisungen zu einer Verbundanweisung zusammenzufassen - schließlich ist eine Verbundanweisung eine einzelne Anweisung und deshalb immer erlaubt, wo eine Anweisung erlaubt ist.
Gruß

Dietmar Brüggendiek