Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с random [D6, Win2k]


badaxe ©   (2003-01-15 15:37:00) 

Приветствую.
Возникла такая проблема:
при помощи ф-ции random заполняю массив номерами записей в рекордсете.

randomize;
for j:= 1 to 5 do
begin
a[j]:=random(query.RecordCount);
end;

Данный кусок выполняется без проблем, при закрытии приложения возникает ошибка "Access violation at address 00401D41 in module qqqq.exe"
А если закомментировать строчку с random, то все закрывается нормально.
Где тяпка?


Digitman   (2003-01-15 16:06:00) [1]


> все что мне нужно - это случайным образом выбрать несколько
> записей из рекордсета


глупей не придумаешь - всякий раз для формирования параметра ф-ции Random() обращаться к объекту Query лишь затем, чтобы в рез-те получить одно и то же зн-е св-ва RecordCount )


var
rc: Integer;
...
rc := query.RecordCount
for j:= 1 to 5 do
begin
a[j]:=random(rc);
end;


gsu   (2003-01-15 16:03:00) [2]

>> Данный кусок выполняется без проблем
странно, а все range cheking стоят ?
и проверь, как создаешь все объекты (массив)


badaxe   (2003-01-15 15:58:00) [3]


> p.s. наивно полагать, что св-во query.RecordCount будет
> меняться в ходе выполнения такого цикла, если ты этого ожидаешь

Вовсе нет... все что мне нужно - это случайным образом выбрать несколько записей из рекордсета...

> - либо выход за пределы памяти, распределенные тобой под
> массив a[]

а как выяснить так ли это ?


Digitman   (2003-01-15 15:53:00) [4]

однозначно, что "тяпка" - не в Random()

- либо объект Query не существует
- либо массив a[] не существует
- либо выход за пределы памяти, распределенные тобой под массив a[]

p.s. наивно полагать, что св-во query.RecordCount будет меняться в ходе выполнения такого цикла, если ты этого ожидаешь


badaxe   (2003-01-15 15:52:00) [5]

ну хоть намекните... :(


Наверх

Титульная страница Поиск, карта сайта Написать письмо