// Hiermit kann man
Strings durcheinander bringen,
// beispielsweise, um Namen von Spielkarten zu mischen.
// Getestet mit CE unter
Win10
procedure MixStrings(TS: TStrings);
var
I, X, Y: Cardinal;
S: String;
begin
Screen.Cursor := crHourGlass;
TS.BeginUpdate;
Randomize;
for I := 0 to Pred(TS.Count) do
begin
X := Random(TS.Count);
repeat
Y := Random(TS.Count);
until Y <> X;
S := TS.Strings[Y];
TS.Strings[Y] := TS.Strings[X];
TS.Strings[X] := S;
end;
TS.EndUpdate;
Screen.Cursor := crDefault;
end;
// Strings durcheinander bringen
procedure TForm1.Button1Click(Sender: TObject);
begin
MixStrings(Memo1.Lines);
end;
// Memo alphabetisch sortieren
procedure TForm1.Button2Click(Sender: TObject);
var
SL: TStringList;
begin
SL := TStringList.Create;
SL.BeginUpdate;
SL.Sorted := True;
Memo1.Lines.BeginUpdate;
SL.Assign(Memo1.Lines);
Memo1.Lines.Assign(SL);
Memo1.Lines.EndUpdate;
FreeAndNil(SL);
end;
|