Форум: "Начинающим";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.036 c