|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
22.08.2011, 11:12 | #1 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
EStackOverflow в собсвенном классе
Доброго времени суток!
Переписываю в программе некоторые вещи, и их надо реализовывать отдельным классом. Сам класс: Код:
Вот ошибка: Код:
В destructor'е выполняется deleterecord в котором вызывается стандартный метод delete из TList. Собственно тут и происходит ошибка. Но эта ошибка откровенно задолбала. Укажите пожалуйста на причину ошибки.... Заранее благодарен. Последний раз редактировалось Человек_Борща; 22.08.2011 в 11:18. |
22.08.2011, 11:26 | #2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Тяжело вместо компилятора, но что бросилось в глаза сразу - отсутствие inherited в конструкторе
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
22.08.2011, 11:34 | #3 |
Заблокирован
Регистрация: 27.05.2010
Сообщений: 1,099
|
Код:
|
22.08.2011, 11:35 | #4 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
Его в конструкторе нужно вызывать до моего кода или после?
Ну почему же. Модуль полный. реализация как 2 пальца=): Код:
только в самом классе TsListView заменить на TListView и убрать из uses модуль sListView __ADD__ mss, тебе цены нет=) Давот незадачка. В каком модуле этот TobjectList мой xe-xe не находит его. __ADD__ Открыл справку. Данный TObjectList лежит себе в странном Contnrs модуле. Последний раз редактировалось Человек_Борща; 22.08.2011 в 11:40. |
22.08.2011, 11:39 | #5 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
"<- ошибка вылетает здесь" при переполнении стека абсолютно бесполезно: вылетает-то оно тут, а стек забил кто-то раньше. TsListView это дерево какое-то? Бряк на fListView.Items.Delete(Indx) и тыкать F7/F8.
Вообще дженериками очень удобно в списки всякую гадость организовывать.
пыщь
Последний раз редактировалось JTG; 22.08.2011 в 11:41. |
22.08.2011, 11:43 | #6 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
в конструкторе до вашего кода, в деструкторе после.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
22.08.2011, 11:45 | #7 | ||
Заблокирован
Регистрация: 27.05.2010
Сообщений: 1,099
|
Цитата:
Но в подавляющем большинстве случаев правилом "правильного" тона является вызов конструирующего метода предка ДО конструирования своего объекта. Цитата:
А TObjectList находится в contnrs.pas |
||
22.08.2011, 11:52 | #8 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
Спасибо. Проблемы с деструктором отвалились. Ошибка отехала в другое место. Теперь она в коде:
Код:
Код:
Код:
А как можно посмотеть содержимое созданного мною класса в run-time? |
22.08.2011, 12:15 | #9 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
Меняпосетило просвящение. Программа убегала в бесконечный цикл.
свойство Records[i] читает данные из GetFile(i) а в GetFile вызвается Records. И стёк вешается. Код:
По этому решение такое: Код:
Последний раз редактировалось Человек_Борща; 22.08.2011 в 12:20. |
22.08.2011, 12:19 | #10 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
TSFLFile(GetItem(Index))
или GetItem(Index) AS TSFLFile
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Организация исключения типа Estackoverflow | Человек Панда | Помощь студентам | 3 | 07.07.2011 16:25 |
ошибка в классе | Progsenya | C# (си шарп) | 6 | 02.04.2011 18:43 |
Ошибка в классе С++ | evoz23 | Помощь студентам | 3 | 21.09.2010 10:56 |
Ошибка при заполнении БД: EStackOverFlow | insense | БД в Delphi | 7 | 29.06.2010 14:38 |