Цитата:
Сообщение от Alegun
Строку
тоже перенести вверх надо
|
Можно проще и "железобетонней" с помощью промежуточного списка строк. Сначала копируешь все в промежуточный список, потом, пока в нем хоть один элемент есть, выбираешь случайный, добавляешь в строку и удаляешь из пром. списка:
Код:
function GetRandomStrings(ListBox : TListBox) : String;
var
Idx : Integer;
Buf : TStringList;
begin
Randomize; // Init random
Result := '';
Buf := TStringList.Create;
Try
Buf.Assign(ListBox.Items);
While Buf.Count > 1 Do
Begin
Idx := Random(Buf.Count); // Get random number 0..Count-1
Result := Result + Buf[Idx] + ' '; // Add this item to the result
Buf.Delete(Idx); // Remove "used" item
End;
Result := Result := Buf[0]; // Last one
Finally
Buf.Free;
End;
end;