![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
NoModalForm в Dll и Exception [D3]
half_litre © (2004-07-15 12:18:00)Ситуация :
ExeNoModalForm(из EXE-ка) вызывает procedure RunNoModalForm
(в DLL-ке), которая создает DllNoModalForm.
//---------------------------------------------
procedure ExeNoModalForm.OnClose(...)
.....
.....
try
if (hndlDll<>-1) and (hndlDll>HINSTANCE_ERROR) then begin
if (@DoneDll<>nil) then DoneDll;
FreeLibrary(hndlDll);
end;
except
end;
.....
.....
Action:=caFree;
end
//---------------------------------------------
procedure DoneDll; //(в DLL-ке)
.....
.....
if DllNoModalForm <>nil then DllNoModalForm.Close;
Application.Handle:=OldAppHandle;
Screen:=OldScr;
.....
.....
end;
//---------------------------------------------
procedure DllNoModalForm.OnClose(...)
.....
.....
Action:=caFree;
end
//---------------------------------------------
Сам трабл :
Если закрыть ExeNoModalForm то все OK.
Если закрыть DllNoModalForm и с небольшой паузой закрыть
ExeNoModalForm то тоже все OK.
Если закрыть DllNoModalForm и быстро закрыть ExeNoModalForm
то Exception.
Замечено что если в Dll передовать не Application.Handle а сам
обьект Application во всех ситуация гуд. Но нужен именно
Application.Handle, без него в DllNoModalForm не
срабатывает Hint'ы.
Весь полный текст не привожу (сделаю по необходимости),
уж больно длинный. Всем зарание респект.
half_litre (2004-07-15 13:34:00) [1]>Если закрыть ExeNoModalForm при открытой DllNoModalForm? Все >нормально?
Точно так
>И в DLL как формочка то создается.:
DllNoModalForm:=TDllNoModalForm.Create(Application);
DllNoModalForm.Show;
АлексейК (2004-07-15 13:26:00) [2]Если закрыть ExeNoModalForm то все OK.
При открытой DllNoModalForm? Все нормально?
И потом в конкретно ошибка и на какой строчке кода возникает Acces Violation?
И в DLL как формочка то создается.
half_litre (2004-07-15 12:59:00) [3]Народ дайте хоть наводку.(не "на водку")