![]() |
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]() ![]() ![]() |
|
SlaUr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 408 Регистрация: 18.9.2003 Репутация: 1 Всего: 5 |
Вот код процедуры
Если убрать ShowMessage('1') то возникает ошибка что делать ? Это сообщение отредактировал(а) SlaUr - 25.7.2014, 16:04 |
|||
|
||||
Illusion Dolphin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 5 Всего: 63 |
Запустите из IDE в режиме отладки и укадите строчку, на которой остановилась программа при ошибке, дополнительно неплохо было бы указать call-stack.
Дополнительно отформатируйте, пожалуйста, код - если там ошибка дальше 3й строки то ничего не понятно. -------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
|||
|
||||
SlaUr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 408 Регистрация: 18.9.2003 Репутация: 1 Всего: 5 |
спасибо за совет буду разбираться с отладчиком.
Но меня интересует почему при ShowMessage ошибка пропадает. |
|||
|
||||
Illusion Dolphin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 5 Всего: 63 |
ShowMessage создаёт модальное окно и прекращает на время выполнение данного кода, хотя другой код может выполняться. Ошибку надо смотреть в дебаге. -------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
|||
|
||||
SlaUr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 408 Регистрация: 18.9.2003 Репутация: 1 Всего: 5 |
Вылетает ошибка на строке ListAllRun.Clear
фигня какая-то |
|||
|
||||
БелАмор |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 209 Регистрация: 10.6.2010 Где: Россия Репутация: 7 Всего: 17 |
А вы уверены? В строке ListAllRun.Clear; CheckListBox1.Clear; имеется два оператора. Как вы определили, что ошибка возникла именно на первом? Присоединяюсь к призыву форматировать текст. Ошибка может быть не в приведённом куске. В частности, неизвестно, где создаётся ListAllRun и не уничтожался ли он. Небольшое изменение кода может привести к тому, что в одном случае работа по указателю на уничтоженный объект вызовет ошибку, а в другом - нет. Проверьте, что ListAllRun на момент вызова scanAllRun создан и не уничтожен. Если вышеизложенное не поможет, имеет смысл привести побольше кода, где можно было бы проследить что как создаётся с самого начала. В частности, существует ли на момент вызова form1 и т.д. Кстати, зачем нужна завязка на глобальную переменную form1? Зачем вашй процедуре что-то знать о ней? Возможно, я что-то просмотрел, но, вроде бы от form1 здесь используется только CheckListBox1. И только из-за него вы всё засунули под with form1 do ? Если вам с form1 нужен только CheckListBox1, так и передавайте его в процедуру параметром: Procedure scanAllRun(ACheckListBox: TCheckListBox); Если через параметр передавать ещё и ListAllRun, так вообще получится полностью автономная процедура, ни к чему не привязанная, которую можно испозьзовать где угодно, не интересуясь именами глобальных переменных. Но это потом, а сначала надо разобраться с проблемой в текущем виде. |
|||
|
||||
Illusion Dolphin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 5 Всего: 63 |
Ещё судя по тому, что процедура scanAllRun статическая, а доступ идёт к форме то возможно формы ещё нету или уже нету. Call-stack бы это показал.
-------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
|||
|
||||
SlaUr |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 408 Регистрация: 18.9.2003 Репутация: 1 Всего: 5 |
очень просто когда у меня возникала ошибка на первой строке я его поставил на 4 строку и программа стала вылетать после прохождения 4 строки
Нет у меня эта процедура выполняется во первых когда создается форма (тогда ошибки не возникает) и при нажатии кнопки (тогда и возникает ошибка)
ListAllRun создается при создании формы Это сообщение отредактировал(а) SlaUr - 28.7.2014, 06:07 |
||||||
|
|||||||
SlaUr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 408 Регистрация: 18.9.2003 Репутация: 1 Всего: 5 |
Исключил ListAllRun из кода и тогда ошибка возникает
в строке
Опять же ошибка возникает с ListAllRun. Ладно буду экспериминтировать дальше Это сообщение отредактировал(а) SlaUr - 28.7.2014, 06:48 |
|||
|
||||
БелАмор |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 209 Регистрация: 10.6.2010 Где: Россия Репутация: 7 Всего: 17 |
Странный у вас подход... Ошибка уже найдена. Со 100% вероятностью. Вот она: Указатель ListAllRun не указывает на реально существующий объект. Осталось только найти причину этого. Вам нужно пройти цепочку: 1. Создание ListAllRun: ListAllRun := TStringList.Create; 2. Место, где уничтожается объект, на который указывает ListAllRun, например: ListAllRun.Free; 3. Вызов scanAllRun, в котором возникает ошибка: scanAllRun; Проблема лежит за пределами scanAllRun. Ваша задача сводится к поиску пункта 2. Вам предложили привести код, чтобы помочь найти совместно. Вы говорите, что это всё ерунда и ошибки там быть не может. Пожалуйста. Ищите сами. Ошибку вам указали. У меня хватает фантазии только на три варианта: 1. Вы создаёте ListAllRun в неудачном месте. 2. Где-то ListAllRun уничтожается. 3. Где-то объект, на который указывает ListAllRun уничтожается и вновь создаётся, но в переменной ListAllRun сохраняется старый указатель на уже уничтоженный объект. |
|||
|
||||
SlaUr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 408 Регистрация: 18.9.2003 Репутация: 1 Всего: 5 |
Попробовал этот же проект в Delphi 7 (до этого работал в Delphi 2010) и все стало нормально - никаких ошибок .
Удалил со своего компа 2010 поставил 7 . Вообще проект писался давно в delphi7. Это сообщение отредактировал(а) SlaUr - 28.7.2014, 12:07 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |