![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
||||
|
||||
|
Всем доброго времени суток. По части динамических библиотек я пока что не опытен. Возник вопрос.
Есть DLL написанная на 2009й рад студии. Для работы с юникодами. Функции из библиотеки используются через юнит где описаны все эти функции таким видом: Код:
unit Utils; interface function ReadUDL(const AUDLFile: PAnsiChar): PAnsiChar; external 'utils.dll'; ... implementation end. Если не ошибаюсь это есть неявная загрузка библиотеки. Вопрос такой. Если возникает ситуация когда файл с библиотекой не найден, как сделать что бы произошла обработка исключения, и при этом программа продолжила свою работу не выполнив ряд функций которые хранятся в библиотеки, а не полностью прекращала выполнение. Надеюсь описал суть вопроса ясно. Очень надеюсь на объяснения. В книгах что-то не нашёл подобных ситуаций, на форумах тоже. Заранее спасибо |
|
#2
|
|||
|
|||
|
Использовать динамическую загрузку DLL (через функции LoadLibrary и GetProcaddress).
|
|
#3
|
||||
|
||||
|
примерно так:
Код:
procedure TmForm.ExIm(ExType:byte;DBName:PChar);
type
TMyProc = procedure(ExType:byte;DBName:PChar); stdcall;
var
DLLInstance: THandle;
MyProc: TMyProc;
begin
@MyProc:= nil;
DLLInstance:= LoadLibrary(PChar('ExIm.dll'));
try
@MyProc:= GetProcAddress(DLLInstance, 'ExIm_SVS');
if Assigned(@MyProc) then MyProc(ExType,DBName)
else
MessageBox(GetActiveWindow, 'Не найдена DLL-функция!', 'Ошибка', 16);
Finally
FreeLibrary(DLLInstance);
end;
end; |
|
#4
|
||||
|
||||
|
Понял, получилось, большое спасибо за помощь!
![]() |