Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   String aus Datei lesen (https://www.delphipraxis.net/174473-string-aus-datei-lesen.html)

Davidlocke13 24. Apr 2013 09:47

String aus Datei lesen
 
Morgen,

Ich habe eine Textdatei in der ich die Wörter in einer Liste untereinander schreibe

Code:
Wort1
Wort2
Wort3
...
Die Textdatei kann ich auch soweit öffnen und die Wörter über Zeilenangabe in einen String laden !

Code:
Datei.LoadFromFile('Wörter.txt');
Allerdings möchte ich das ein beliebiges Wort per Zufall in den String geladen wird.
Wie stelle ich das am besten an ?

Liebe Grüße

Der schöne Günther 24. Apr 2013 09:53

AW: String aus Datei lesen
 
Die Klasse
Delphi-Quellcode:
TStringList
hat direkt eine Methode
Delphi-Quellcode:
LoadFromFile()
, anschließend kannst du dir per Zufall eins aus der Liste holen. Falls die Textdatei aber extrem groß wird, sollte man besser zu anderen Methoden greifen....

Davidlocke13 24. Apr 2013 09:57

AW: String aus Datei lesen
 
Mit knapp 300 Wörtern sollte das nicht so groß sein ;-)


Nur wie mache ich das mit dem Zufall ?

sx2008 24. Apr 2013 10:30

AW: String aus Datei lesen
 
Du könntest die Stringlist in "Unordnung" bringen dann kannst du ganz gemütlich eine Zeile nach der Anderen konsumieren bis die Liste leer ist.

Hier ist die Prozedur, die deine Stringliste mischelt:
Delphi-Quellcode:
// Stringliste zufällig mischen
procedure ShuffleTStrings(s:TStrings);

  procedure FisherYatesShuffle(x:TStrings);
  var
     i : Integer;
  begin
     for i := x.Count-1 downto 1 do
        x.Exchange(i, random(i+1));
  end;

var
   t : TStringList;
begin
   Assert(Assigned(s));
   if s is TStringList then
      FisherYatesShuffle(s)
   else
   begin
      t := TStringList.Create;
      try
         t.Assign(s);
         FisherYatesShuffle(t);
         s.Assign(t);
      finally
         t.Free;
      end;
   end;
end;
Und so kannst du eine Zeile nach der Anderen rausnehmen
Delphi-Quellcode:
function GetFirstLine(list:TStrings):string;
begin
  if list.Count = 0 then
    raise Excepion.Create('Liste ist leer');
  result := list[0];
  list.Delete(0);
end;

Der schöne Günther 24. Apr 2013 10:32

AW: String aus Datei lesen
 
Wenn du nur ein Wort haben willst reicht eigentlich schon:

Delphi-Quellcode:
var
   sl:TStringList;
begin

   sl := TStringList.Create();

   try
      sl.LoadFromFile(c:\meineDatei.txt');
      Button5.Caption := sl[Random(sl.Count)];
    finally
        sl.Free();
    end;

Davidlocke13 24. Apr 2013 11:47

AW: String aus Datei lesen
 
Danke funktioniert wunderbar ;-)


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