Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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
Спасибо)) Вы мне помогли найти ошибку.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)