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

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

Ошибка invalid pointer operation


Fenix ©   (2006-03-17 15:43:00) 

Доброе время суток.
У меня начала каждый раз при закрытии приложения выскакивать ошибка "invalid pointer operation". Но не выделяеться строка. Из-за чего она может выскакивать? Я думаю, что это из-за динамически создаваемых компонентов. Но точно неуверен.
Кто знает как ее исправить прошу написать.


Fenix   (2006-03-17 17:38:00) [1]


> то последний его индекс (считаю с нуля) contacts.Count-2

СПС теперь все работает хорошо.


Fenix   (2006-03-17 17:38:00) [2]


> то последний его индекс (считаю с нуля) contacts.Count-2

СПС теперь все работает хорошо.


Stakan   (2006-03-17 17:31:00) [3]

palva ©   (17.03.06 17:26) [11]
Правильно сказал, выход за границу массива.

> На самом деле "invalid pointer operation" это когда к
> пойнтеру прибавляют число.

Вот это не совсем корректно


palva   (2006-03-17 17:26:00) [4]

Если длина динамического массива contacts.Count-1
то последний его индекс (считаю с нуля) contacts.Count-2

Но это мысли вслух. На самом деле "invalid pointer operation" это когда к пойнтеру прибавляют число. Или я опять ошибаюсь?


Fenix   (2006-03-17 17:02:00) [5]

Нашел где ошибка
Setlength(Move_item,contacts.Count-1);
for i:=0 to contacts.Count-1 do begin
Move_item[i]:=Tmenuitem.Create(User_move);
Move_item[i].Caption:=contacts[i];
User_move.Add(Move_item[i]);
end;

Почему может быть ошибка? Вроде при уничтожении User_move и все подменю автоматически должны очиститься...


Сергей М.   (2006-03-17 16:18:00) [6]


> Fenix ©   (17.03.06 15:47) [3]
> ДЛЛ нету.


Ой врешь .. Где-тот в коде твоего шедевра оное явно или неявно используется ..


Fenix   (2006-03-17 16:04:00) [7]


> строки, дин. массивы

да использовались. но по окончанию программы я не освобождал память: SetLength(a,0);. Т.к. до этого и без освобождения норм рабтало.


Stakan   (2006-03-17 15:59:00) [8]

Fenix ©   (17.03.06 15:50) [4]
То, что ошибка вылетает после закрытия ещё не значит, что её причина где - то в конце программы.
Используются ли строки, дин. массивы, PChar?


Fenix   (2006-03-17 15:56:00) [9]


> tesseract ©

у меня используеться NameGroup:array [0..20] of char;
Может из за него ошибка? Просто мне что бы записать структуру в файл, надо в Char перевести, т.к. со String пишет ошибку...


tesseract   (2006-03-17 15:52:00) [10]

Как правило вылетает при неправильной чистке указателей, или PChar.


> коментирую все в FormClose,


Надо не в FromClose зав формой чистить а в FromDestroy;
FormClose  не убивает форму.


Fenix   (2006-03-17 15:50:00) [11]

коментирую все в FormClose, но всеравно выскакивает эта ошибка. Она выскакивает только после закрытия приложения.


Fenix   (2006-03-17 15:47:00) [12]


> Stakan ©

ДЛЛ нету.


> не обращаться по адресам, указывающим в никуда (после освобождения
> памяти)

Щас проверю. спс за подсказку.


Desdechado   (2006-03-17 15:46:00) [13]

не обращаться по адресам, указывающим в никуда (после освобождения памяти)


Stakan   (2006-03-17 15:45:00) [14]

А поподробнее можно?
DLL часом не используются?


Наверх

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