Ich denke das ist die Lösung für mich weil das sortieren der Liste zusätzlich zu lange dauert bei jeden Titel aufs neue.
Danke..
Delphi-Quellcode:
function TBassPlayer.ListShuffle(LView: ISkinListView): Integer;
type
TArrayElement = Integer;
TArray = array of TArrayElement;
var
FisherYates: TArray;
ListCount: Integer;
procedure FillArray(var aArray: TArray; const cStart: Integer = 0);
var
i: Integer;
begin
for i := Low(aArray) to High(aArray) do
aArray[i] := i + cStart;
end;
function ShuffleFisherYates(var aArray: TArray): Integer;
var
i,j: Integer;
tmp: TArrayElement;
begin
// alle Elemente des Feldes durchlaufen
for i := Low(aArray) to High(aArray) do begin
// neue, zufällig Position bestimmen
j := i +Random(Length(aArray) -i +Low(aArray));
// Element Nr. i mit Nr. j vertauschen (3ecks-Tausch)
tmp := aArray[j];
aArray[j] := aArray[i];
aArray[i] := tmp;
end;
Result := aArray[0];
end;
begin
ListCount := LView.Count(LView.Handle);
SetLength(FisherYates, ListCount);
FillArray(FisherYates);
Result := ShuffleFisherYates(FisherYates);
end;
Heino ist gone..
gruss