Meine Shuffle function
Delphi-Quellcode:
{$REGION 'function ListShuffle'}
function TBassPlayer.ListShuffle(LView: ISkinListView): Integer;
var
Inx: Integer;
RandomInx: Integer;
RandomIndex: Integer;
ListCount: Integer;
begin
RandomIndex := 0;
result := 0;
ListCount := LView.Count(LView.Handle);
for Inx := 0 to ListCount - 1 do
begin
begin
RandomInx := Random(ListCount);
if (RandomInx <> Inx) then
RandomIndex := RandomInx;
end;
if RandomIndex = LView.GetCurSel(LView.Handle) then
RandomIndex := RandomIndex + 1;
result := RandomIndex;
end;
end;
{$ENDREGION}
Wie kann man diesen verbessern so das nicht so oft immer wieder der 1 Listeintrag abgespielt wird?
Heino nervt langsam..
gruss
Du machst das viel zu kompliziert. Dein Algorithmus shuffled nichts, das würde ja bedeuten, das er die Reihenfolge der Items in der Liste willkürlich verändert. Das scheint aber nicht die Absicht zu sein. Wenn Du nur einen der Einträge zufällig auswählen willst ist die for-Schleife völlig unsinnig, sorry. Alles was Du braucht ist
Delphi-Quellcode:
RandomInx := Random(ListCount);
if (RandomInx <> Inx) then begin
result := RandomInx;
exit;
end;