| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Asm: Общие вопросы > Ошибка |
| Автор: <Spawn> 3.2.2003, 03:42 |
| В Дельфи, во время закрытия программы, выдает ошибку(Acces Violetion) и в CPU устанавливает курсор на данные: @LStrClr: 004040AC 8B10 mov edx,[eax] 004040AE 85D2 test edx,edx 004040B0 741C jz +$1c 004040B2 c70000000000 mov [eax],$00000000 004040B8 8B4AF8 mov ecx, [edx-$08] //Сдесь устанавливается курсор Подскажите, пожалуйста, по этому участку можно определить в результате чего ошибка? |
| Автор: Chingachguk 3.2.2003, 06:37 |
| "@LStrClr" и нижеследующий код относится к системному(дельфи-библиотеки) коду или же это результат компилляции твоего кода ? Скорее первое. Если так, то какой-то функции неверно передан параметр(ы). Пройди отлдачиком по своему коду и определи точку крэша. Особо ничего сказать нельзя. Делается тут примерно вот что: {Получить указатель из какой-то переменной} mov edx,[eax] {Он Nil ?} test edx,edx {Если да, то свалить нахрен} jz +$1c {Сделать указатель равным Nil} mov [eax],$00000000 {Что-то вытащить по запомненному указателю - 8 байт} mov ecx, [edx-$08] {Но указатель указывает на ерунду или "-8" выходить за границы чего-то } Посмотри у себя, все ли методы и структуры ты инициализируешь, все ли конструторы классов вызываешь и т.п. |
| Автор: <Spawn> 5.2.2003, 17:30 |
| Спасибо)) Вы мне помогли найти ошибку. |