![]()  | 
	
 
  | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Привет всем! 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	В общем проблема такая не могу разобратся Как можно сделать случайным образом вытаскивать данные и выводить их. Данные можно вытащить при помощи номера индекса(от 0 до сколько угодно) Допустим к примеру Listbox в нем 100 строк каждая строка имеет свой текст как мне вытащить рандомно строки да бы они не посторялись и засуноть их номера в масив Вот код того что я начал но он не верно работает Код: 
	type
  recc = record
  Q_num: integer; // номер строки
  A_num: integer; 
var
Test[0..29] of recc;
 qCount:= List1.Items.Count;
 for q:=0 to 29 do
 begin
   repeat
   Randomize;
   ok:=0;
   qa:=Random(qCount);
   for q1:=0 to 29 do
     if Test[q1].Q_num<>qa then ok:=1;
   if q1=29 then ok:=1;  //<- Вот это строчка как бы лишняя но без нее циклит приложение если совпадает случайное значение с массивом
   until ok=1;
   Test[q].Q_num:=qa;
 end;
Плиз очень надо помогите...  | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Код: 
	function Unique(var flag: array of boolean; range: integer): integer;
begin
  result := random(range);
  while flag[result] do
    result := random(range); 
  flag[result] := true;
end;
 procedure Mass_of_Random(range: integer; var RND_Mass: array of integer);
var
  i: integer;
  bm: array of boolean;
begin
  SetLength(bm, length(RND_Mass));
  for i := 0 to length(RND_Mass) - 1 do
  begin
   RND_Mass[i] := Unique(bm, range);
  end;Так можно сгенерить массив из уникальных рандомных чисел, ну а дальше понятно.  | 
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Как то так...Все в одной процедуре... 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	Код: 
	procedure TForm1.Button1Click(Sender: TObject);
type
 recc = record
  Q_num: integer; // номер строки
  A_num: integer;
 end;
var
 Test : array [0..9] of recc;
 qCount, q, ok, qa, q1 : word;
begin
 Randomize;//Достаточно запустить один раз
 qCount:= ListBox1.Items.Count;
 for q:=0 to qCount-1 do
 begin
  repeat
   ok:=0;
   qa:=Random(qCount);
   for q1:=0 to qCount-1 do
    if Test[q1].Q_num<>qa then
     ok := 1
    else
    begin
     ok := 0;
     break;
    end;
  until
   ok=1;
  Test[q].Q_num:=qa;
  ListBox2.Items.Add(IntToStr(Test[q].Q_num));
 end;
end; | 
| 
		 
			 
			#4  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 NIch & TOJluK большое спс! 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 |