AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Lazarus-Zahlenraten-Programm will nicht funktionieren
Thema durchsuchen
Ansicht
Themen-Optionen

Lazarus-Zahlenraten-Programm will nicht funktionieren

Ein Thema von Citaro · begonnen am 2. Apr 2014 · letzter Beitrag vom 3. Apr 2014
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#11

AW: Lazarus-Zahlenraten-Programm will nicht funktionieren

  Alt 2. Apr 2014, 23:28
Du solltest dich ein wenig mit dem Objekt-Inspektor auseinandersetzen und wie man den bedient (speziell das Zuweisen von Events), dann funktioniert das auch
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#12

AW: Lazarus-Zahlenraten-Programm will nicht funktionieren

  Alt 3. Apr 2014, 00:26
Zitat:
Delphi-Quellcode:
...
implementation
initialization
...
Und das funktioniert?
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
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, 07: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
Antwort Antwort
Seite 2 von 2     12   

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz