|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Использование DLL. Если её нет
Всем доброго времени суток. По части динамических библиотек я пока что не опытен. Возник вопрос.
Есть 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; Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#4
|
||||
|
||||
Понял, получилось, большое спасибо за помощь!
"Люди никогда не видят то, существование чего им кажется невозможным." ©Терри Пратчетт |