Цитата:
	
	
		| 
			
				 Сообщение от 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;