Einzelnen Beitrag anzeigen

Benutzerbild von JamesTKirk
JamesTKirk

Registriert seit: 9. Sep 2004
Ort: München
604 Beiträge
 
FreePascal / Lazarus
 
#13

AW: Lazarus-Zahlenraten-Programm will nicht funktionieren

  Alt 3. Apr 2014, 06:32
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
Sven
[Free Pascal Compiler Entwickler]
this post is printed on 100% recycled electrons
  Mit Zitat antworten Zitat