Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Zufallszahlen erzeugen und "erraten"


orangata - Di 04.05.10 15:51
Titel: Zufallszahlen erzeugen und "erraten"
Hallo,

ich bin absoluter Neuling.
Nach einigen kleineren Programmen, die alle relativ problemlos liefen, gilt es jetzt folgende Aufgabe zu lösen:
Eine Zufallszahl zw 1 und 100 soll erraten werden.
Im Quelltext wird bei Eingabe Edit wird mir ein Fehler angezeigt, warum und wie kann er behoben werden:


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:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Buttons;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Label1: TLabel;
    Eingabeedit: TEdit;
    ErgebnisPanel: TPanel;
    NeuButton: TBitBtn;
    RatenButton: TBitBtn;
    AbbruchButton: TBitBtn;
    procedure AbbruchButtonClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure RatenButtonClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
  var Zufallszahl : integer;
procedure TForm1.AbbruchButtonClick(Sender: TObject);
begin
  Close;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Randomize;
  Zufallszahl:=Random(100)+1 ;
end;

procedure TForm1.RatenButtonClick(Sender: TObject);
var Eingabe: Integer;
begin
  Eingabe:=StrToInt(EingabeEdit.Text);
  if Eingabe = Zufallszahl
    then ErgebnisPanel.Caption:=' Das war richtig!! '
    else if Eingabe<Zufallszahl
    then ErgebnisPanel.Caption:='Die Zahl ist zu klein!'
    else ErgebnisPanel.Caption:='Die Zahl ist zu groß!' ;
  EingabeEdit.SetFocus;
end;

end.

Die Unit ist eingebunden in das Project1 eingebunden


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {EingabeEdit};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TEingabeEdit , EingabeEdit);
  Application.Run;
end.


Vielen Dank für eure Hilfe

Gruß
orangata

Moderiert von user profile iconGausi: B- durch Delphi-Tags ersetzt


Webo - Di 04.05.10 16:28

An welcher Stelle genau wird denn der Fehler angezeigt ? Und noch wichtiger: was für ein Fehler ?


orangata - Di 04.05.10 18:16

Zeile 8 Quelltext, EingabeEdtit

Gruß
orangata


Xion - Di 04.05.10 18:19

In beiden oben geposteten Quelltexten ist die Zeile 8 leer :roll:


orangata - Di 04.05.10 18:21

Sorry,
11: Application.CreateForm(TEingabeEdit , EingabeEdit);
Application.Run;


Xion - Di 04.05.10 18:24

Das bringt garnichts...das sagt aus "Es ist ein Fehler im Programm"

Das einzige was mir überhaupt an deinem Code komisch vorkommt ist, dass du Zufallszahl irgendwie an einer komischen Stelle definierst...

Edit:
Mach mal Breakpoints. Und: Wie lautet der Fehler? Access Violation?

Edit2:

Alles Quatsch. Was machst du denn da mit dem EingabeEdit? In dem zweiten Quelltext solltest du eigentlich erstmal nicht rumfummeln ^^ Da wo EingabeEdit steht muss Form1 würd ich sagen


SvenAbeln - Di 04.05.10 18:31

Da passt etwas nicht zusammen:

Delphi-Quelltext
1:
2:
3:
program Project1;
[...]
  Application.CreateForm(TEingabeEdit EingabeEdit);



Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
unit Unit1;
[...]
type
  TForm1 class(TForm)
[...]
var
  Form1: TForm1;


Webo - Di 04.05.10 18:43


Delphi-Quelltext
1:
Application.CreateForm(TEingabeEdit , EingabeEdit);                    
versucht eine Form zu erzeugen. EingabeEdit ist aber ein Edit was mit TForm herzlich wenig zu tun hat ;-) Also einfach durch TForm1, Form1 ersetzen und es müsste passen.


orangata - Di 04.05.10 18:44

danke ;-), es funzt