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

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

Почему в длл не работает try except?? [D6, Win2k]


Страницы:   1 2

bloodman ©   (2004-09-02 21:36:00) 

Когда происходит исключение в блоке  try except , то все равно показывается AV и програ вылетает( try except в dll) .


bloodman   (2004-09-02 23:32:00) [21]

>А избежать AV можно - не орбращатся к ресурсу к-рого нет.
как ты это узнаешь ?

1)а ты пнапиши в except код какой-нибудь .
2) и в функциях Button... напиши try raiseAV except alla end;
Что происходит?


GuAV   (2004-09-02 23:29:00) [22]

Короче, сам тест сделал. except работает.
// DLL

procedure raiseAV;
asm
 MOV EAX, [0]
end;

procedure raiseAVh;
begin
try
raiseAV;
except
end;
end;

exports raiseAV, raiseAVh;

begin

end.

// EXE

procedure raiseAV; external 'project1.dll'
procedure raiseAVh; external 'project1.dll'

procedure TForm1.Button2Click(Sender: TObject);
begin
raiseAVh
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
raiseAV
end;

А избежать AV можно - не орбращатся к ресурсу к-рого нет.


bloodman   (2004-09-02 23:28:00) [23]

Fay ©   (02.09.04 23:14) [9]
В том проекте откуда я взял , там иконку хранил ,из кода как буудто не понятно...

GuAV ©   (02.09.04 23:10) [8]
как избежать AV в случае [2] если хранить иконки в ресурсах.(например храня в RCDATA)


Fay   (2004-09-02 23:14:00) [24]

>> 1) почему RT_RCDATA? просто мне так нужно
Для чего?!


GuAV   (2004-09-02 23:10:00) [25]


> Так что try except действительно не работает в dll?

А проверь
try
 raise Exception.Create('');
except
end;

===================================
AV не надо ловить, его надо избегать!


Fay   (2004-09-02 23:04:00) [26]

Я чё-то не пойму вопрос.
Tools->debugger options->Language Exceptions->Stop on Delphi Exceptions убирал?


bloodman   (2004-09-02 23:01:00) [27]

1) почему RT_RCDATA? просто мне так нужно .
2) Чем не устраивает LoadIcon? это был пример для
GuAV ©   (02.09.04 21:41) [1]
где нельзя избежать AV

Так что try except действительно не работает в dll?


Fay   (2004-09-02 22:53:00) [28]

Не понял 2 вещи
1) почему RT_RCDATA?
2) Чем не устраивает LoadIcon?


bloodman   (2004-09-02 22:44:00) [29]

ага щазз. поэтому я и спрашиваю. Если бы все так просто было. к тому же дельфи  нормально с try except работает когда в ней запускаешь , не в этом дело короче.


YurikGL   (2004-09-02 21:58:00) [30]

А ты наверно из делфи прогу запускаешь. Дык надо ж сам ехе-к запускать. Тогда никаких AV/


bloodman   (2004-09-02 21:46:00) [31]

это понятно . вот например код:
ResStream :=nil;
try
   try
      ResStream:=TResourceStream.CreateFromID(HInstance,1,RT_RCDATA);
   except
   //error
   end;
   IF ResStream <> nil Then
   begin
     MyIcon:=TIcon.Create;
     MyIcon.LoadFromStream(ResStream);
     imge.AddIcon(MyIcon);
     MyIcon.Free;
   end;
finally
   ResStream.Free;
end;

Если убрать try except , то если не будет ресурса, то выскачит AV  и как быть?


GuAV   (2004-09-02 21:41:00) [32]

AV не надо ловить, его надо избегать!


Страницы:   1 2

Наверх

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