Du könntest den entsprechenden String ja wirklich einfach aus dem Array löschen.
Delphi-Quellcode:
procedure DeleteEntry(var pArray: Array of String; pPos: integer); //Prozedur zum Löschen eines beliebigen Eintrags des Arrays
var i, j: integer;
h: array;
begin
h := pArray;
j := 0;
for i:=low(h) to high(h) do
begin
if (i <> pPos) then
begin
pArray[j] := h[i];
inc(j);
end;
end;
setlength(pArray, length(pArray)-1);
end;
function ChoseRandomString: String; //Wählt zufällig einen String aus un löscht ihn
var i:integer;
begin
i := randomrange(low(StringArray), high(StringArray));
result := StringArray[i];
DeleteEntry(StringArray, i);
end;
Hab das mal eben so in die Tastatur gehämmert, bin mir nicht sihcer ob es funktioniert.
Aber vor allem das Prinzip sollte klar werden.