![]() |
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]() ![]() ![]() |
|
NeedForS |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 18.2.2007 Где: Город Герой - Мос ква Репутация: нет Всего: нет |
Возникает ошибка при попытки освободить память от объекта.
Сам класс
Текст ошибки: Project Project1.exe raised exception class EInvalidPointer with message 'Invalid pointer operation'. Process stopped. Use Step or Run to continue. Пробовал писать свой деструктор
Добавлено через 5 минут и 48 секунд Пробовал Dim.Free тоже не помогает |
||||||
|
|||||||
CodeMonkey |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 29 Всего: 89 |
Добавлено через 56 секунд Вспомогательный вопрос: чему, по-вашему, равна Dim при входе в BitBtn9Click и почему? -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
NeedForS |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 18.2.2007 Где: Город Герой - Мос ква Репутация: нет Всего: нет |
Да, глупо получилось, я ставлю то
То
К сожалению
Ситуацию не изменило. Точно та же ошибка Invalid Pointer |
||||||
|
|||||||
XperT |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 269 Регистрация: 19.8.2006 Репутация: нет Всего: 4 |
мм? |
|||
|
||||
NeedForS |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 18.2.2007 Где: Город Герой - Мос ква Репутация: нет Всего: нет |
Тоже не помогло Invalid Pointer. Такой вопрос, из области новичка. Ведь писать свои конуструкторы и деструкторы не обязательно, достаточно пользоваться родительскими метода Create и Free? |
|||
|
||||
XperT |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 269 Регистрация: 19.8.2006 Репутация: нет Всего: 4 |
Смотря что тебе нужно. Если нужно при создании выполнить какие-то действия или присвоить переменным какие то значения, то используй конструктор, а если ненужно - то и не используй. То же самое с деструктором. Добавлено Почти уверен что проблема внутри Dim.Maximum, а не на Dim.Free; Это сообщение отредактировал(а) XperT - 16.7.2009, 18:36 |
|||
|
||||
NeedForS |
|
||||||||||||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 18.2.2007 Где: Город Герой - Мос ква Репутация: нет Всего: нет |
Ну вообще, я ставил паузу на строке Dim.Free до неё ошибок не возникало, после нажатия на F8 вылезает Invalid Pointer. Привожу код Dim.Maximum. И все его вложенные методы, в процессе его выполнения. Не самый хороший по стилю код, если будут предложения как его улучшить, буду благодарен.
|
||||||||||||
|
|||||||||||||
kami |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 22 Всего: 72 |
вместо Finalize попробуй SetLength(хххr, 0, 0);
P.S. создание TStringList-ов лучше вынести в конструктор, т.к. если 2 раза будет вызыван метод Maximum, то получим утечку. Или же использовать правило "где создал, там и уничтожил". |
|||
|
||||
NeedForS |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 18.2.2007 Где: Город Герой - Мос ква Репутация: нет Всего: нет |
Из-за того, что я не могу запустить Free я и получил утечку. А где создал там и уничтожил я не могу, так как TStringList у меня в трех методах используется. Даже если не объявлять самому деструктор, а просто запустить Free унаследованный от TObject, то выдает ошибку Invalid Pointer. С чем это связано, я понять не могу. |
|||
|
||||
NeedForS |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 18.2.2007 Где: Город Герой - Мос ква Репутация: нет Всего: нет |
Попробовал использовать SetLength(Func, 0, 0) тоже самое, возникает ошибка Invalid Pointer, хотя если Watch показывает, что Func ссылается не на пустое множество
|
|||
|
||||
kami |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 22 Всего: 72 |
Ну и заставили вы меня помучиться с вашим кодом...
ошибка здесь:
Добавлено через 2 минуты и 2 секунды для того, чтобы ее отловить нужно было просто включить rangeChecking в опциях проекта. Но вычислил я её эмпирическим методом ![]() |
|||
|
||||
NeedForS |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 18.2.2007 Где: Город Герой - Мос ква Репутация: нет Всего: нет |
Вроде все заработало так, как надо. Если возникнут ещё ошибки, я напишу. А пока все пашет на ура. Всем огромное спасибо за помощь.
|
|||
|
||||
CodeMonkey |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 29 Всего: 89 |
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |