Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 01.03.2010, 21:16
Аватар для Лунтик-Некрофил
Лунтик-Некрофил Лунтик-Некрофил вне форума
Начинающий
 
Регистрация: 28.09.2009
Сообщения: 165
Репутация: 12
По умолчанию Запутался

Нужно записать в одну бд рандомные записи другой.
Код:
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  
Старый 01.03.2010, 21:51
Vocabulary Vocabulary вне форума
Новичок
 
Регистрация: 17.09.2009
Сообщения: 85
Репутация: 9
По умолчанию

Странно, что для элементов массива war память выделяется [setlength(war,length(war)+1);], а для nom нет.

Код:
begin
  si:=adotable1.RecordCount;
  setlength(nom, si);
  for ...
...
Ответить с цитированием
  #3  
Старый 01.03.2010, 22:17
Аватар для Лунтик-Некрофил
Лунтик-Некрофил Лунтик-Некрофил вне форума
Начинающий
 
Регистрация: 28.09.2009
Сообщения: 165
Репутация: 12
По умолчанию

Код:
setlength(nom,length(nom)+1);
это? так оно вроде еще с самого начала указанно
__________________
Алкоголик-аморал, явная угроза обществу
Блин, я уже местный, а все равно нифига не знаю...
Ответить с цитированием
  #4  
Старый 01.03.2010, 23:04
Аватар для Лунтик-Некрофил
Лунтик-Некрофил Лунтик-Некрофил вне форума
Начинающий
 
Регистрация: 28.09.2009
Сообщения: 165
Репутация: 12
По умолчанию

Не могу найти, где промазал( вся надежда на Вас, а то плакал мой курсовиг(
__________________
Алкоголик-аморал, явная угроза обществу
Блин, я уже местный, а все равно нифига не знаю...
Ответить с цитированием
  #5  
Старый 02.03.2010, 07:46
Vocabulary Vocabulary вне форума
Новичок
 
Регистрация: 17.09.2009
Сообщения: 85
Репутация: 9
По умолчанию

Код:
for t:=0 to high(war) do begin
adon.insert;
adon.fields[1].asinteger:=nom[war[i]];
adon.post;
end;
Откуда взялась переменная "i"?

P.S. И мой тебе совет, обращаясь сюда за помощью, не держи других за идиотов.
Ответить с цитированием
  #6  
Старый 02.03.2010, 08:00
Аватар для Лунтик-Некрофил
Лунтик-Некрофил Лунтик-Некрофил вне форума
Начинающий
 
Регистрация: 28.09.2009
Сообщения: 165
Репутация: 12
По умолчанию

Переменная i взялась из предыдущего массива, её замена на t ничего не меняет.
Цитата:
P.S. И мой тебе совет, обращаясь сюда за помощью, не держи других за идиотов.
За собой пока такого не замечал, возможно просто туплю)
__________________
Алкоголик-аморал, явная угроза обществу
Блин, я уже местный, а все равно нифига не знаю...
Ответить с цитированием
  #7  
Старый 02.03.2010, 08:27
Vocabulary Vocabulary вне форума
Новичок
 
Регистрация: 17.09.2009
Сообщения: 85
Репутация: 9
По умолчанию

Если взять код из первого поста, то он просто не компилируется, т.к. i не объявлена локально в секции var. Поэтому утверждать, что ничего не меняется при замене ее на t (исходя из приведенного кода) достаточно легкомысленно.
У меня этот код нормально работает в части присвоения значений в массивах (если, конечно, заменить i на t).

Последний раз редактировалось Vocabulary, 02.03.2010 в 08:35.
Ответить с цитированием
  #8  
Старый 02.03.2010, 19:54
Аватар для Лунтик-Некрофил
Лунтик-Некрофил Лунтик-Некрофил вне форума
Начинающий
 
Регистрация: 28.09.2009
Сообщения: 165
Репутация: 12
По умолчанию

Объявлял новую локальную переменную, подставлял вместо i - ноль результата( В конечном итоге получаю 20 нелепых записей в таблицу, причем все они равны единице(
__________________
Алкоголик-аморал, явная угроза обществу
Блин, я уже местный, а все равно нифига не знаю...
Ответить с цитированием
  #9  
Старый 02.03.2010, 20:29
Аватар для Лунтик-Некрофил
Лунтик-Некрофил Лунтик-Некрофил вне форума
Начинающий
 
Регистрация: 28.09.2009
Сообщения: 165
Репутация: 12
По умолчанию

Ппц, Vocabulary, сорри за испорченные нервы)
Я просто при записи в массив забыл поставить переход на следующую запись в таблице))
Спасибо)
Тема думаю еще актуальна, т.к. кажись ошибочки небольшие появились.
__________________
Алкоголик-аморал, явная угроза обществу
Блин, я уже местный, а все равно нифига не знаю...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:48.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter