Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Zufall (https://www.delphipraxis.net/123154-zufall.html)

Jan.R 28. Okt 2008 17:44


Zufall
 
Hallo Leute,


ich hab mal eine Frage:

Ich habe in eine Textdatei Wörter gesschrieben.
Die sollen jetzt zufällig in einem label erscheinen!

Bisher sieht das so aus:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  wörter: tstringlist;
  wort1: string;
  wort2: string;
begin
  randomize;
  wörter := tstringlist.create;
  wörter.loadfromfile ('wörter.txt');
  wort1 := wörter [0];
  wort2 := wörter [1];
  label2.caption := vokabeln (random);
end;
In der letzten Zeile steht ja: label2.caption := vokabeln (random);
Wie muss ich das schreiben, damit keine Fehlermeldung, wie "Operator oder Semikolon fehlt!" erscheint???

Bitte helft mir!

mfg
Jan

[edit=SirThornberry]Delphi-Tags gesetzt und eingerückt - nächstes mal bitte selbst machen! Mfg, SirThornberry[/edit]

Medium 28. Okt 2008 17:48

Re: Zufall
 
Wie ist "vokabeln" deklariert?

Edit: Hihi, die ös sind mir garnicht aufgefallen :). Das könnte natürlich zu Problemen führen...

Meflin 28. Okt 2008 17:50

Re: Zufall
 
[ot]
Du hast nicht ernsthaft ös in deinem Quelltext oder :shock:
Delphi-Quellcode:
wörter
Das tut ja schon beim hinschaun weh :cry:

hitzi 28. Okt 2008 17:52

Re: Zufall
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var woerter: tstringlist; //das ö nimmt der, glaub ich, nicht
begin
  randomize; //muss nur einmal aufgerufen werden, am besten ins Form.Create
  woerter := tstringlist.create;
  try
    woerter.loadfromfile ('wörter.txt');
    if woerter.count > 0 then begin
      label2.caption := woerter[Random(woerter.Count)];
    end;
  finally
    FreeAndNil(woerter);
  end;
end;
Aber ungetestet ... kann Fehler enthalten, sollte dir aber die Richtung zeigen.

Uwe Raabe 28. Okt 2008 17:56

Re: Zufall
 
Zitat:

Zitat von Jan.R
Wie muss ich das schreiben, damit keine Fehlermeldung, wie "Operator oder Semikolon fehlt!" erscheint???

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  wörter: tstringlist; // arbeitest du mit Delphi 2009? Ansonsten dürfen Variablen keine Umlaute haben!
  wort1: string;
  wort2: string;
begin
  randomize;
  wörter := tstringlist.create;
  wörter.loadfromfile ('wörter.txt');
  wort1 := wörter [0];
  wort2 := wörter [1];
  label2.caption := vokabeln (random); // Vokabeln ist nirgends definiert, also kennt der Compiler es nicht!
end;
So könnte was draus werden:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  woerter: tstringlist;
begin
  randomize;
  woerter := tstringlist.create;
  try
    woerter.loadfromfile ('wörter.txt');

    { Nimm ein zufälliges Wort aus der Liste.
      Random(N) liefert eine Zahl von 0 bis N-1 }
    label2.caption := woerter[random(woerter.count)];
  finally
    woerter.Free;
  end;
end;
[edit] Hatte das Free ganz vergessen...

Jan.R 28. Okt 2008 18:03

Re: Zufall
 
Und wenn ich nur zwei Zeilen Wörter zufällig haben will!

Wie funktioniert das?

DeddyH 28. Okt 2008 19:03

Re: Zufall
 
Delphi-Quellcode:
erstesWort := woerter[random(woerter.count)];
zweitesWort := woerter[random(woerter.count)];
Die Variablen müssen natürlich deklariert sein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:02 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 by Thomas Breitkreuz