Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Einfaches Würfel Programm gibt fehler (https://www.delphipraxis.net/93846-einfaches-wuerfel-programm-gibt-fehler.html)

24karatboy 12. Jun 2007 10:47


Einfaches Würfel Programm gibt fehler
 
Delphi-Quellcode:
procedure TForm1.wuerfelnClick(Sender: TObject);
var summe,teilsum,anzahl,i:integer;
begin
randomize;
i:=1;
anzahl:=strtoint(anzahl.text);
while (i<=anzahl) do
begin
teilsum:=random(6)+1;
summe:=summe+teilsum;
end;
showmessage('Summe: ' + inttostr(summe));
end;

end.

Fehlermeldungen:

[Fehler] Unit1.pas(40): Record, Objekt oder Klassentyp erforderlich
[Fehler] Unit1.pas(41): ';' erwartet, aber 'WHILE' gefunden
[Fehler] Unit1.pas(43): Undefinierter Bezeichner: 'teilsum'
[Fehler] Unit1.pas(44): Undefinierter Bezeichner: 'summe'
[Fehler] Unit1.pas(45): '.' erwartet, aber ';' gefunden
[Warnung] Unit1.pas(47): Text hinter dem abschließenden 'END.' wird vom Compiler ignoriert
[Fataler Fehler] Project1.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden

Thorben_Ko 12. Jun 2007 10:51

Re: Einfaches Würfel Programm gibt fehler
 
Hmm also der erste fehler ist das du eine endlos schleife produziert. Die Variable I wird nicht innerhalb der schleife verändert. aber dies erklärt keinen deiner fehler, poste mal die ganz unit.

leddl 12. Jun 2007 10:54

Re: Einfaches Würfel Programm gibt fehler
 
Du definierst anzahl als Integer, willst aber dann auf die Property "Text" zugreifen :zwinker:
Benenne also entweder deine Variable oder die Komponente um, oder greife auf die Komponente mit Form1.anzahl zu ;)

Kleiner Tipp am Rande: Gib deinen Komponenten sprechende Namen, damit du direkt weißt, um was es sich handelt (also AnzahlEdit, ZahlenLB, IgnoreCB,...)

//Edit:
Und rufe Randomize bitte nur einmal in deinem Programm - zB im FormCreate - auf. Sonst ists aus mit Zufallszahlen :zwinker:

24karatboy 12. Jun 2007 10:59

Re: Einfaches Würfel Programm gibt fehler
 
leddl aber ich convertiere text ja in nen int wert und dann müsste es doch gehen oder meintest du jetzt was anderes ?


Ganze Unit:

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
    anzahl: TEdit;
    wuerfeln: TButton;
    beenden: TBitBtn;
    procedure beendenClick(Sender: TObject);
    procedure wuerfelnClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.beendenClick(Sender: TObject);
begin
close;
end;

procedure TForm1.wuerfelnClick(Sender: TObject);
var summe,teilsum,anzahl,i:integer;
begin
randomize;
i:=1;
anzahl:=strtoint(anzahl.text);
while (i<=anzahl) do
begin
teilsum:=random(6)+1;
summe:=summe+teilsum;
end;
showmessage('Summe: ' + inttostr(summe));
end;

end.

leddl 12. Jun 2007 11:01

Re: Einfaches Würfel Programm gibt fehler
 
Zitat:

Zitat von 24karatboy
leddl aber ich convertiere text ja in nen int wert und dann müsste es doch gehen oder meintest du jetzt was anderes ?

Integers sind primitive Datentypen, keine Klassen, und haben daher auch keine Properties. Daher kannst du sogar in Bananenmilchshakes konvertieren und zum selben Ergebnis kommen :zwinker:

//Edit:
Ist anscheinend nicht klar geworden, daher nochmal ausführlich:
Du hast dein Edit mit Namen "anzahl". Gleichzeitig deklarierst du dir in deiner Methode eine lokale Variable "anzahl" vom Typ Integer.
Wenn du jetzt in deiner Methode auf "anzahl" zugreifst, wird automatisch die lokale Variable hergenommen. Diese hat logischerweise keine Property "Text" und schon fällst du auf die Nase.

Daher mein Rat: Benenne deine Komponenten sprechend. Und auch generell sollte man vermeiden, lokale und globale Variablen oder Properties gleich zu nennen, wenn man beide innerhalb derselben Methode verwenden will ;)

//Edit2:
Ach Mist, jetzt muss da wieder einer dazwischenfunken :mrgreen:

Tormentor32 12. Jun 2007 11:01

Re: Einfaches Würfel Programm gibt fehler
 
Dein edit heißt genauso wie die variable, daher kommt der Fehler. Nenne dein edit einfach um, zB in edAnzahl.

Blackheart 12. Jun 2007 11:06

Re: Einfaches Würfel Programm gibt fehler
 
Misstraust Du hier den Leuten. :wink:
http://www.delphi-forum.de/viewtopic.php?t=73595

24karatboy 12. Jun 2007 11:13

Re: Einfaches Würfel Programm gibt fehler
 
Blackheart nein nur irgendwie kam ich vorhin nichtmehr aufs delphi-forum drauf deswegen kam ich hier hin ;) mal schauen ob ich es hin kriege

leddl 12. Jun 2007 11:15

Re: Einfaches Würfel Programm gibt fehler
 
Zitat:

Zitat von Blackheart
Misstraust Du hier den Leuten. :wink:
http://www.delphi-forum.de/viewtopic.php?t=73595

Naja, ist schon zu vertreten. Dort hat er es ja zuerst gepostet und wirklich hilfreich war man dort ja nicht. Das Problem wurde zwar gelöst, aber ohne jedwede Erläuterung...

@24karatboy:
Dennoch wäre es ganz nett gewesen, zu erfahren, dass sich bereits andere um das Problem gekümmert haben. Bei Crosspostings sollte man so nett sein und den Link zum jeweils anderen Forum dann doch mit angeben, sonst machen sich Leute völlig umsonst Mühe ;)

24karatboy 12. Jun 2007 11:23

Re: Einfaches Würfel Programm gibt fehler
 
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
    wuerfeln: TButton;
    beenden: TBitBtn;
    summeED: TEdit;
    anzahlED: TEdit;
    procedure beendenClick(Sender: TObject);
    procedure wuerfelnClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    randomize;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.beendenClick(Sender: TObject);
begin
close;
end;

procedure TForm1.wuerfelnClick(Sender: TObject);
var summe,anzahl,i:integer;

begin
i:=1;
summe:=0;
anzahl:=0;

anzahl:=strtoint(anzahlED.text);
while (i<=anzahl) do
begin
summe:=summe+random(6)+1;
i=i+1;
end;
showmessage('Summe: ' + inttostr(summe));
end;

end.

Fehlermelungen:

Erzeugen
[Fehler] Unit1.pas(22): ',' oder ':' erwartet, aber ';' gefunden
[Fehler] Unit1.pas(23): Typ erwartet, aber 'END' gefunden
[Fehler] Unit1.pas(49): ':=' erwartet, aber '=' gefunden
[Fataler Fehler] Project1.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden


habs mal ein wenig geändert aber naja immernoch fehler ...

Tormentor32 12. Jun 2007 11:25

Re: Einfaches Würfel Programm gibt fehler
 
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
    wuerfeln: TButton;
    beenden: TBitBtn;
    summeED: TEdit;
    anzahlED: TEdit;
    procedure beendenClick(Sender: TObject);
    procedure wuerfelnClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    //randomize; // was soll das randomize hier????
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.beendenClick(Sender: TObject);
begin
close;
end;

procedure TForm1.wuerfelnClick(Sender: TObject);
var summe,anzahl,i:integer;

begin
i:=1;
summe:=0;
anzahl:=0;

anzahl:=strtoint(anzahlED.text);
while (i<=anzahl) do
begin
summe:=summe+random(6)+1;
i:=i+1; // da stand i=i+1
end;
showmessage('Summe: ' + inttostr(summe));
end;

end.

24karatboy 12. Jun 2007 11:26

Re: Einfaches Würfel Programm gibt fehler
 
umsonst ist das nicht ;) ihr helft mit ehrlich damit

Tormentor32 12. Jun 2007 11:28

Re: Einfaches Würfel Programm gibt fehler
 
Also: randomize ist eine Methode, da wo du es hingeschrieben hast, da kommen deklarationen hin.

Füge deiner Form ein OnCreate Ereignis hinzu und schreibe randomize dort hinein!

24karatboy 12. Jun 2007 11:34

Re: Einfaches Würfel Programm gibt fehler
 
Tormentor32: hab ich getan aber irgendwie gehen die zufallszahlen jetzt nicht mehr

TForm1.FormCreate


randomize;

Tormentor32 12. Jun 2007 11:37

Re: Einfaches Würfel Programm gibt fehler
 
Geraten:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  randomize;
end;
Wie hast du das Create hinzugefügt?

24karatboy 12. Jun 2007 11:39

Re: Einfaches Würfel Programm gibt fehler
 
die form angeklickt und dann im objektinspektor ereignisse und dann oncreate und dann randomize da einegfügt

Tormentor32 12. Jun 2007 11:40

Re: Einfaches Würfel Programm gibt fehler
 
Und das klappt nicht? Zeig nochmal deinen Quelltext!

24karatboy 12. Jun 2007 12:20

Re: Einfaches Würfel Programm gibt fehler
 
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
    wuerfeln: TButton;
    beenden: TBitBtn;
    summeED: TEdit;
    anzahlED: TEdit;
    procedure beendenClick(Sender: TObject);
    procedure wuerfelnClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.beendenClick(Sender: TObject);
begin
close;
end;

procedure TForm1.wuerfelnClick(Sender: TObject);
var summe,anzahl,i:integer;

begin
i:=1;
summe:=0;
anzahl:=0;

anzahl:=strtoint(anzahlED.text);
while (i<=anzahl) do
begin
summe:=summe+random(6)+1;
i:=i+1;
end;
summeED.Text:=inttostr(summe);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
randomize;
end;

end.

Tormentor32 12. Jun 2007 12:25

Re: Einfaches Würfel Programm gibt fehler
 
Hmm und was klappt jetzt nicht?

leddl 12. Jun 2007 12:26

Re: Einfaches Würfel Programm gibt fehler
 
:gruebel: Und was genau geht jetzt mit den Zufallszahlen nicht mehr?

24karatboy 12. Jun 2007 12:28

Re: Einfaches Würfel Programm gibt fehler
 
vorher als ich das randomize in der procedure hatte kam nen ergebnis raus und jetzt nichtmehr

Tormentor32 12. Jun 2007 12:34

Re: Einfaches Würfel Programm gibt fehler
 
In SummeED.Text muss das Ergebnis stehen! Ich kann keinen Fehler entdecken! Oder bin ich etwa blind :shock:

leddl 12. Jun 2007 12:35

Re: Einfaches Würfel Programm gibt fehler
 
Zitat:

Zitat von 24karatboy
vorher als ich das randomize in der procedure hatte kam nen ergebnis raus und jetzt nichtmehr

:gruebel: Naja, vorher hattest du nur Fehlermeldungen :mrgreen:
Nein, also mal ernsthaft. Was meinst du denn jetzt mit dieser Aussage? Auch jetzt solltest du ein Ergebnis bekommen... Sprich doch mal Klartext...

24karatboy 12. Jun 2007 12:49

Re: Einfaches Würfel Programm gibt fehler
 
sorry funzt alles ohne was geändert zu haben vorhin hab ich kein ergebnis bekommen ich danke euch allen hat jemand ne gute aber nicht zu komplizierte aufgabe für mich ?

leddl 12. Jun 2007 12:55

Re: Einfaches Würfel Programm gibt fehler
 
Zitat:

Zitat von 24karatboy
sorry funzt alles ohne was geändert zu haben vorhin hab ich kein ergebnis bekommen ich danke euch allen hat jemand ne gute aber nicht zu komplizierte aufgabe für mich ?

Japp! Lerne, Satzzeichen sinnvoll einzusetzen :mrgreen: Es gibt ,.;:!? nicht umsonst :zwinker:
Ach ja, und wenn du schon dabei bist, mach dich auch mal mit der Shift-Taste vertraut :mrgreen: Da kriegt man ganz lustige Großbuchstaben, die man an passender Stelle einfügen kann :stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:54 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