Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.22;
Скачать: CL | DM;

Вниз

FreeLibrary   Найти похожие ветки 

 
psa247 ©   (2006-01-07 11:27) [0]

Добрый день, подскажите почему при каждом использовании этого фрагмента кода у меня растет количество открытых дескрипторов:


SomeButtonClick(...)
begin
   HMyDll:= LoadLibrary("My.dll");
  @MyDll:= GetProcAddress(HMyDll, "Hook");

   if Assigned(@MyDll)then MyDll(True, 12345);
   if HMyDll<>0 then FreeLibrary(HMyDll);
end;


 
sniknik ©   (2006-01-07 16:52) [1]

а зачем каждый раз dll грузить? сделай проверку по другому

SomeButtonClick(...)
begin
 if Assigned(@MyDll) then begin
    HMyDll:= LoadLibrary("My.dll");
    if HMyDll >= 32 then Raise Exception.Create(xxx);
    @MyDll:= GetProcAddress(HMyDll, "Hook");
    if not Assigned(@MyDll) then Raise Exception.Create(xxx);
 end;

  MyDll(True, 12345);
  //if HMyDll<>0 then FreeLibrary(HMyDll); //освободится по завершении программы (можно и самому позаботится, но лишнее)
end;


 
begin...end ©   (2006-01-07 17:01) [2]

> sniknik ©   (07.01.06 16:52) [1]

> if Assigned(@MyDll) then begin
>    HMyDll:= LoadLibrary("My.dll");

Э-э-э... Можно пояснить?

> if HMyDll >= 32 then Raise Exception.Create(xxx);

Типа, DLL может загружаться только по адресам, меньшим 32? Оригинально.


 
sniknik ©   (2006-01-07 17:37) [3]

> Э-э-э... Можно пояснить?
так в > psa247 ©   (07.01.06 11:27) написано, составлял сдесь "кусками". "идея" - проверка на not nil. если не nil значит кнопочку уже нажимали и процедура подгружена.

> Типа, DLL может загружаться только по адресам, меньшим 32? Оригинально.
наоборот. знак спутал. надо <


 
psa247 ©   (2006-01-07 17:38) [4]

В этом необходимость (грузить/выгружать)

> sniknik ©   (07.01.06 16:52) [1]


 
begin...end ©   (2006-01-07 17:41) [5]

> sniknik ©   (07.01.06 17:37) [3]

> "идея" - проверка на not nil. если не nil значит кнопочку
> уже нажимали и процедура подгружена.

В [1], если процедура подгружена, LoadLibrary вызывается снова.

> наоборот. знак спутал. надо <

Не надо. Надо <> 0.


 
begin...end ©   (2006-01-07 17:43) [6]

> Надо <> 0.

В смысле, если <> 0, то ошибки нет. А в [1] тогда надо "= 0".


 
sniknik ©   (2006-01-07 17:48) [7]

> В [1], если процедура подгружена, LoadLibrary вызывается снова.
да. ;( и сдесь спутал...



Страницы: 1 вся ветка

Текущий архив: 2006.01.22;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.026 c
14-1134685773
Antip
2005-12-16 01:29
2006.01.22
Delphi 2006, скорость загрузки


14-1135976799
Джо
2005-12-31 00:06
2006.01.22
Ну-с, флудеры,


4-1131518233
ART2005
2005-11-09 09:37
2006.01.22
Работа с запущенным процессом


8-1124127076
murz
2005-08-15 21:31
2006.01.22
Вопрос по Speech API


2-1136292867
helga
2006-01-03 15:54
2006.01.22
QRCompositeReport