Antwort von
nach 21 Stunden
hilfreich
Re^5: [Delphi;Win95] - Zufallszahl immer 0
Du musst die Prozedure rand, die Du geschrieben hast ja irgendwo aufrufen. Am Besten Du loescht diese Prozedure rand und dann nimmst Du das Ereignis OnCreate der Form und schreibst diese zwei Zeilen da rein.
Ausserdem sollte man in der OOP (Objekt Orientierten Programmierung) moeglichst wenig globalen Variablen deklarieren. Form1, Zahl1, Input sind solche globalen Variablen. Das mit der Form1 ist ok, weil das Delphi das automatisch macht, die anderen aber nicht.
Da Input nur in der Click-Eigenschaft verwendet wird, sollte das eine lokale Variable im Click-Unterprogramm sein und Zahl1 wird im ganzen Objekt benoetigt und sollte deswegen in der Private-Deklaration von TForm1 drinnenstehen. Hier der Code (Du kannst den Code nicht einfach bei Dir im Delphi reinkopieren, Du musst auch noch die OnCreate-Eigenschaft der Form und die OnClick-Eigenschaft vom Button im Objektinspektor setzten, am sichersten ist, wenn Du alles selber schreibst).
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
Zahl1:Integer;
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
randomize;
Zahl1:=random(10);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Input:string;
begin
Input:=Edit1.Text;
if Zahl1>strtoint(input) then showmessage('zu klein')
else if Zahl1<strtoint(input) then showmessage('zu groß')
else showmessage('joho')
end;
Wenn Du den Code, den Du hast moeglichst beibehalten willst, dann musst Du nur vor dem end. ganz am Ende des Sources hinschreiben:
begin
rand;
end.