![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка 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 часом не используются?