![]() |
Stringliste zufällig umsortieren
Folgende Prozedure bringt eine Stringliste (Objekt, abgeleitet von TStrings) in zufälliger Weise durcheinander.
Es ist Quasi das Gegenteil von Sortieren.
Delphi-Quellcode:
Das in der While-Schleife der Vergleich auf > 1 stattfindet ist übrigens Absicht:
procedure RandomizeTStrings(list:TStrings);
var list2 : TStrings; i : Integer; begin list2 := TStringList.Create; list.BeginUpdate; try while list.Count > 1 do begin i := Random(list.Count); list2.AddObject(list.Strings[i], list.Objects[i]); list.Delete(i); end; list.AddStrings(list2); finally list.EndUpdate; list2.Free; end; end; das letzte Element bleibt in list und braucht nicht nach list2 kopiert werden, nur um anschliessend zurück nach list kopiert zu werden. Von Lannes kommt folgende Alternative:
Delphi-Quellcode:
Von Hawkeye219 kommt außerdem noch diese Variante:
//Randomize bei Programmstart nicht vergessen
procedure RandomizeTStrings(list:TStrings); var z : Integer; begin list.BeginUpdate; for z := 0 to list.Count-1 do list.Exchange(z,Random(list.Count)); list.EndUpdate; end;
Delphi-Quellcode:
[edit=CalganX]Alternativen angefügt. Mfg, CalganX[/edit]
procedure RandomizeTStrings (list: TStrings);
var z : Integer; begin list.BeginUpdate; try for z := list.Count - 1 downto 1 do list.Exchange(z, Random(z)); finally list.EndUpdate; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 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 by Thomas Breitkreuz