![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| ALeXandrK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 342 Регистрация: 31.1.2007 Где: Санкт-Петербург Репутация: 3 Всего: 6 |
При закрытии программы вылетает ошибка Invalid Pointer Operation.
Я знаю, что она означает, но что именно её вызвало понять не могу. Возможно, что я неправильно работаю со списком, но тогда в каком месте? Список TList вроде сам очищается при уничтожении (судя по исходникам), но именно при его уничтожении и возникает ошибка. Вырезал из проекта нужную часть... посмотрите, помогите. Пожалуйста P.s.: Ошибка вылетает, только если в списке больше одного элемента. Это сообщение отредактировал(а) Snowy - 21.8.2007, 16:57 Присоединённый файл ( Кол-во скачиваний: 15 )
TList.rar 5,52 Kb-------------------- Богат не/ни тот, у кого много, а тот, кому хватает |
|||
|
||||
| Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 23 Всего: 51 |
||||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
ALeXandrK, модуль uConstants дафай.
Добавлено через 3 минуты и 32 секунды ALeXandrK, во первых TList сам за собой не подчищает объекты добавленные в него. Если нужен с самоочиткой используй TObjectList. -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| ne0n |
|
|||
|
PlayBoy ![]() ![]() Профиль Группа: Участник Сообщений: 733 Регистрация: 5.8.2005 Где: Н.Новгород Репутация: 1 Всего: 11 |
Rennigth, угу я тоже его у себя не нашел....
так что ALeXandrK, модуль в студию!!! |
|||
|
||||
| Bose |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 23 Всего: 51 |
ALeXandrK, ну и замудрил... Смешал классы и контролы...
Во-первых... Tlist не вызвает деструкторы объектов. Он только убирает ссылки на них. А об уничтожении самих объектов должен позаботиться кто-то другой. В данном случае, все твои объекты TExcercise уничтожает их родитель - ScrollBox1. А Exception происходит из-за того, что что ты произвольно обращаешься со полем font у всех ExtraCaption. Во всех местах замени
на
и будет тебе щастье. Точнее в методе
А вообще мой совет, измени структуру классов, пока не запутался... |
||||||
|
|||||||
| ALeXandrK |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 342 Регистрация: 31.1.2007 Где: Санкт-Петербург Репутация: 3 Всего: 6 |
Если поставить Точку останова после, то ошибка не вылетает. Файл обновил (добавил туда uConstants);
Но если пройтись по самому TList, то можно увидеть, что очищает:
-------------------- Богат не/ни тот, у кого много, а тот, кому хватает |
||||||
|
|||||||
| Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 23 Всего: 51 |
Delete(I); // ВОТ ЭТО РАЗВЕ НЕ УДАЛЕНИЕ?
Удаление. Удаление ссылки на объект, а не вызов деструктора объекта. |
|||
|
||||
| ALeXandrK |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 342 Регистрация: 31.1.2007 Где: Санкт-Петербург Репутация: 3 Всего: 6 |
Заменил - ничего не изменилось.
Да, невнимательно я посмотрел
Поподробнее можно?! В каком отношении изменить? Е-мое... значит нужно использовать TObjectList | TClassList | что тут еще предложить можно? Это сообщение отредактировал(а) ALeXandrK - 21.8.2007, 16:41 -------------------- Богат не/ни тот, у кого много, а тот, кому хватает |
||||||
|
|||||||
| Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 23 Всего: 51 |
||||
|
||||
| ALeXandrK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 342 Регистрация: 31.1.2007 Где: Санкт-Петербург Репутация: 3 Всего: 6 |
Конечно -------------------- Богат не/ни тот, у кого много, а тот, кому хватает |
|||
|
||||
| Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 23 Всего: 51 |
в procedure TExercise.Draw;
и в procedure TExercisesList.Draw; |
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
Ну и второе с фонтами чет ты переборщил. У Image-а вообще на кой второй создавать, да и не переприсваивать надо везде указатели, а ассигнить
Добавлено через 1 минуту и 21 секунду О блин, тут уже палемика пока я возился... Вообщем этот код уже нормально работает, только константы свои верни, я отбалды ставил. Добавлено через 2 минуты и 3 секунды Плюс, он ужо от ObjectList, так что о освобождении не надо заботиться -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 23 Всего: 51 |
С таким кодом лучше не используй - замучаешься отслеживать Access Violationы. Сначала лучше определиться, кто именно будет отвечать за TExcercise объекты - Контрол на котором он лежит(Parent), или TExcerciseList. |
|||
|
||||
| ALeXandrK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 342 Регистрация: 31.1.2007 Где: Санкт-Петербург Репутация: 3 Всего: 6 |
Со шрифтами я конечно накосячил...
Rennigth, Bose: Спасибо! Выручили... Всем по репе Остался только один вопрос без ответа:
Изменить каким образом? P.s.: за TExcercise отвечает TExcerciseList. Список этот очищается до закрытия формы и соответственно контролу, на котором были, TExcercise ничего удалять не нужно, да он это и не будет делать. (уже все работает) Это сообщение отредактировал(а) ALeXandrK - 21.8.2007, 16:54 -------------------- Богат не/ни тот, у кого много, а тот, кому хватает |
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
Да не, в принципе все нормально, только я бы не юзал TImage, а наследовался бы от TCustomControl, или вообще от TGraphicControl, в зависимости от твоих задач. Image тажелый гад. Добавлено через 1 минуту и 6 секунд А хде репа? -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |