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;