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

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

Работа с динамическим массивом [D5, Win2k]


Tex ©   (2004-08-11 13:22:00) 

Ув.мастера, с чем может быть связана такая ошибка. В цикле формируется динамический массив N: array of Word.
Выглядит это так:

начало цикла
.
.
определяется L-длина массива
SetLength(N,L);
.
.
.
N := nil;
конец цикла

L никогда не равно 0. При этом, если в массив N вносился хотя бы один ненулевой элемент, все проходит нормально.
В противном случае при попытке выполнить N := nil выдается ошибка "Invalid pointer operation".


GrayFace   (2004-08-11 14:31:00) [1]

Tex   (11.08.04 13:43) [3]
> Даже если в цикле N:=nil не выполнять, то по окончанию
> цикла это все равно надо сделать.

Почему?
Если все-таки надо, то SetLength(N,0) эквивалентно N:=nil, только глючить не будет.


Ega23   (2004-08-11 13:45:00) [2]

Тебе сказали: приведи весь код


Tex   (2004-08-11 13:43:00) [3]

1) L <> 0, там есть проверка.
2) Индексы берем от 0 до L-1. Даже если в цикле N:=nil не выполнять, то по окончанию цикла это все равно надо сделать.


KSergey   (2004-08-11 13:27:00) [4]

Вообще-то, лучше бы поправдишный код

Но приведенному:
1) зачем N := nil;? все равно потом будет SetLength(N,L) с новой длиной
2) А индексы какие берем при доступе к элементам массива? 0..L-1 или иные?


Ega23   (2004-08-11 13:26:00) [5]

SetLength(N,0) ?


Наверх

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