Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Выгрузка из памяти DLL файлов. [D3, Win95/98]


inko ©   (2002-04-17 15:41:00) 

Следующую функцию я использую для выгрузки из памяти DLL файлов:


{---------------------------------------------------------------}
procedure TForm1.Button7Click(Sender: TObject);
var
hDLL : THandle;
aName : array[0..10] of char;
FoundDLL : Boolean;
begin
StrPCopy(aName, Edit1.Text);
FoundDLL := false;
repeat
hDLL := GetModuleHandle(aName);
if hDLL = 0 then
break;
FoundDLL := true;
FreeLibrary(hDLL);
until false;
if FoundDLL then
ShowMessage("File is successfully unloaded !")
else
ShowMessage("File is not found in memories !");
end
else
ShowMessage("File has an invalid format !");
end;
{---------------------------------------------------------------}

Когда я пытаюсь с помощью этой функции выгрузить не используемый DLL файл, выводится сообщение
ShowMessage("File is not found in memories !");, а сразу после его закрытия - ошибка
"Access violation at address 72505CFB. Read of address 72505CFB".

Что происходит и как от этого избавится?


Nicolas_   (2002-04-17 16:59:00) [1]

У тебя в коде полная неразбериха. К какому if относится последний else?


Alx2   (2002-04-17 15:50:00) [2]

И еще:
hDLL := GetModuleHandle(PChar(Edit1.Text));
Это надежнее.


Alx2   (2002-04-17 15:49:00) [3]

DLL выгружается когда это "удобно" системе и когда никто больше ее не использует.


Наверх

Титульная страница Поиск, карта сайта Написать письмо