![]() |
AW: Lazarus-Zahlenraten-Programm will nicht funktionieren
Du solltest dich ein wenig mit dem Objekt-Inspektor auseinandersetzen und wie man den bedient (speziell das Zuweisen von Events), dann funktioniert das auch ;)
|
AW: Lazarus-Zahlenraten-Programm will nicht funktionieren
Zitat:
|
AW: Lazarus-Zahlenraten-Programm will nicht funktionieren
Anmerkungen im Quelltext.
Delphi-Quellcode:
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.
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. Das sollte hoffentlich etwas weiter helfen. :) Gruß, Sven |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz