Anmerkungen im Quelltext.
Delphi-Quellcode:
unit Zahlenraten;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls;
type
TForm1 =
class(TForm)
Panel1: TPanel;
ErgebnisPanel: TPanel;
Label1: TLabel;
NeuButton: TBitBtn;
RatenButton: TBitBtn;
AbbruchButton: TBitBtn;
EingabeEdit: TEdit;
procedure AbbruchButtonClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure RatenButtonClick(Sender: TObject);
procedure NeuButtonClick(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
initialization // huh? wo kommt das denn her? diese beiden...
{$I zahlenraten.lrs} // ... Zeilen sollten ganz am Ende vorm "end." sein
var Zufallszahl : integer;
procedure TForm1.AbbruchButtonClick(Sender: TObject);
// warum hast du hier nochmal TForm1.AbbruchButtonClick? Für Methoden brauchst du keine Forwarddeklarationen, da diese bereits im Interface-Teil deklariert sind
(
{$R *.DFM})
// "(...)" ist nicht die richtige Variante, um Compiler-Direktiven zu deaktivieren. Wenn dann wäre es "{.$R *.DFM}", aber siehe unten
var Zufallszahl: integer;
// warum ist "Zufallszahl" zweimal angegeben? Es darf nur einmal vorkommen; außerdem wäre es besser die Variable innerhalb der Klasse TForm1 (zum Beispiel in der private-Section) zu deklarieren.
procedure TForm1.AbbruchButtonClick(Sender: TObject);
begin
Close;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
// Die Captions beim Start kannst du auch im Objektinspektor angeben
Panel1.Caption:='
Zahlenraten';
Label1.Caption:='
Bitte wählen Sie eine Zahl von 1 bis 100:';
Randomize;
Zufallszahl:=Random(100)+1;
end;
procedure TForm1.RatenButtonClick(Sender: TObject);
var Eingabe : Integer;
begin
// Eventuell besser StrToIntDef oder TryStrToInt verwenden; andernfalls kommt es zu ner Exception, wenn EingabeEdit.Text keine Zahl enthält. Alternativ ein MaskEdit verwenden, welches nur Zahleneingaben erlaubt, aber das führt eventuell zu weit...
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.
Bezüglich
DFM und LRS: was ist denn bei dir unter Projekt => Projekteinstellungen => Ressourcentyp des Projekts eingestellt? Ich empfehle dir FPC-Ressourcen. Die Verwendung von LRS-Dateien ist seit ich glaub Lazarus 0.9.26 veraltet. Dann solltest du allerdings die
DFM-Datei von Lazarus umwandeln lassen, dazu unter Werkzeuge den Menüpunkt "
DFM- in LFM-Datei umwandeln" auswählen. Dann die Direktive {$R *.DFM} wieder aktivieren und die Dateiendung auf LFM ändern.
Das sollte hoffentlich etwas weiter helfen.
Gruß,
Sven