Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.024 c
5-1121829947
rainy_
2005-07-20 07:25
2006.01.22
Отображение составных частей компонента


14-1135719528
MegaVovan
2005-12-28 00:38
2006.01.22
Где можно качнуть Delphi 8!


2-1136547314
DoSpyRap
2006-01-06 14:35
2006.01.22
Как убрать сообщение?


2-1136646305
аматор
2006-01-07 18:05
2006.01.22
убрать нули в Еш


14-1135494365
Mozart
2005-12-25 10:06
2006.01.22
Лунный цикл




   Наверх