![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Почему в длл не работает try except?? [D6, Win2k]
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 не надо ловить, его надо избегать!