Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Какой объект вызывает ошибку Access Violation?


temp_and_test ©   (2007-10-22 10:41:00) 

Здавcтвуйте... я тут столкнулся только что с такой же проблеммой как и в вопросе ниже (вернее задача похожа). Пишет ошибку Access violation at address 00403858 in module project1.exe. Read of address fffffffc. Это если запускать скопилированный exe файл. А если запускать со среды то пишет Priveleged Instruction И НИКАКОГО НАМЁКА НА ОШИБКУ (в плане указания).

Я запускаю Search-> Find Error и попадаю в код что то Free. Вот как узнать какой объект уничтожается. Я и Dr Watson  запускал - ничего не находит.

У меня есть предположение что это кусочек кода глючит, но это только предположение.

procedure Link;
begin
try
   try
     NMEchoAdr_Link := TNMEcho.Create(Form1);
     NMEchoAdr_Link.TimeOut := 150;
     NMEchoAdr_Link.Port := 139;
     NMEchoAdr_Link.Host := IP;
     NMEchoAdr_Link.OnConnect :=Form1.test_IP;
     NMEchoAdr_Link.Connect;
   except
     Exit;
   end;
 finally
   NMEchoAdr_Link.Free;
 end;
end;


korneley   (2007-10-22 12:21:00) [1]

Да и конструкциям, типа
begin
 if <условие> then exit;
 ...
end;

предпочитаю
begin
 if not <условие> then begin
 ...
 end;
end;


korneley   (2007-10-22 12:17:00) [2]


> Долго ты так учиться будешь
Я же сказал - Век :) Ну или около того. Просто со времен Трубопаскаля, я считал, что exit - это безусловный переход на финиш процедуры. Ошибался. Осознал. Теперь пытаюсь примирить новое знание с прежним мировозрением...


Leonid Troyanovsky   (2007-10-22 12:04:00) [3]


> korneley ©   (22.10.07 11:57) [9]

> учись. Действительно, finally при exit работает... А при
> halt() - нет ;)

Долго ты так учиться будешь.
Хелп бы почитал, Try...finally statements

--
Regards, LVT.


Leonid Troyanovsky   (2007-10-22 11:57:00) [4]


> temp_and_test   (22.10.07 10:41)  

> У меня есть предположение что это кусочек кода глючит, но
> это только предположение.

Предполагаю, что и остальные части не менее глючны.

Книжечку к.л. почитай.

--
Regards, LVT.


korneley   (2007-10-22 11:57:00) [5]

Эксперимент прошел удачно. Не для меня. Вот век живи, век учись. Действительно, finallyпри exitработает... А при halt()- нет ;)


KSergey   (2007-10-22 11:50:00) [6]

> korneley ©   (22.10.07 11:47) [6]
> > Неужели вы думаете, что Exit обойдет finally стороной?
> Вообще-то да...

Это был бы пиец :)


korneley   (2007-10-22 11:47:00) [7]


> Неужели вы думаете, что Exit обойдет finally стороной?
Вообще-то да... Пойду эксперимент поставлю, в целях прояснить для себя ситуацию :)


KSergey   (2007-10-22 11:42:00) [8]

> korneley ©   (22.10.07 11:38) [4]
> А при их возникновении просто Exit и ни
> намека на открепление?

Неужели вы думаете, что Exit обойдет finally стороной??
Впрочем,  я уже задавал в другйо ветке автору сего шедевра вопрос о смысле сих действий...


korneley   (2007-10-22 11:38:00) [9]


>
> try
>    try
>    ...
>    except
>      Exit;
>    end;
>  finally
>    ...
>  end;
>



Ты в finallyсобираешься попадать только при отсутствии ошибок/ситуаций? А при их возникновении просто Exitи ни намека на открепление?


Reindeer Moss Eater   (2007-10-22 10:48:00) [10]

а объект - NMEchoAdr_Link


Сергей М.   (2007-10-22 10:48:00) [11]


> temp_and_test   (22.10.07 10:41)


Потому что неверная логика в коде твоем реализована.


Reindeer Moss Eater   (2007-10-22 10:46:00) [12]

Form1.test_IP;


Наверх

Титульная страница Поиск, карта сайта Написать письмо