![]()  | 
	
 
  | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Нужно записать в одну бд рандомные записи другой. 
		
	
		
		
		
		
			
		
		
		
		
		
			Код: 
	procedure TForm2.nom; var s,q,t,si,er:integer; search2:boolean; nom,war: array of integer; begin s:=form1.lb.ItemIndex; ado.TableName:=form1.lb.Items.strings[s]; ado.Open ; setlength(nom,0); for q:=0 to ado.RecordCount do begin setlength(nom,length(nom)+1); nom[q]:=ado.Fields[5].AsInteger ; end; si:=ado.RecordCount ; randomize; setlength(war,0); while length(war)<si do begin er:=random(si); search2:=false; for t:=0 to high(war) do if war[t]=er then begin search2:=true;break; end; if search2 then continue; setlength(war,length(war)+1); war[high(war)]:=er; end; for t:=0 to high(war) do begin adon.insert; adon.fields[1].asinteger:=nom[war[i]]; adon.post; end; end; Что я пропустил? Последний раз редактировалось Лунтик-Некрофил, 01.03.2010 в 21:52.  | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Странно, что для элементов массива war память выделяется [setlength(war,length(war)+1);], а для nom нет. 
		
	
		
		
		
		
		
	
		
		
	
	
	Код: 
	begin si:=adotable1.RecordCount; setlength(nom, si); for ... ...  | 
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Код: 
	setlength(nom,length(nom)+1);  | 
| 
		 
			 
			#4  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Не могу найти, где промазал( вся надежда на Вас, а то плакал мой курсовиг( 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#5  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Код: 
	for t:=0 to high(war) do begin adon.insert; adon.fields[1].asinteger:=nom[war[i]]; adon.post; end; P.S. И мой тебе совет, обращаясь сюда за помощью, не держи других за идиотов.  | 
| 
		 
			 
			#6  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Переменная i взялась из предыдущего массива, её замена на t ничего не меняет.  
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	Цитата: 
	
  | 
| 
		 
			 
			#7  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Если взять код из первого поста, то он просто не компилируется, т.к. i не объявлена локально в секции var. Поэтому утверждать, что ничего не меняется при замене ее на t (исходя из приведенного кода) достаточно легкомысленно. 
		
	
		
		
		
		
		
		
			У меня этот код нормально работает в части присвоения значений в массивах (если, конечно, заменить i на t). Последний раз редактировалось Vocabulary, 02.03.2010 в 08:35.  | 
| 
		 
			 
			#8  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Объявлял новую локальную переменную, подставлял вместо i - ноль результата( В конечном итоге получаю 20 нелепых записей в таблицу, причем все они равны единице( 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#9  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Ппц, Vocabulary, сорри за испорченные нервы) 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	Я просто при записи в массив забыл поставить переход на следующую запись в таблице)) Спасибо) Тема думаю еще актуальна, т.к. кажись ошибочки небольшие появились.  |