Вместо заключения
Использование динамически подключаемых библиотек не так сложно, как это может показаться на первый взгляд. DLL предоставляют широчайшие возможности для оптимизации работы приложений, а также работы самих программистов. Используйте DLL и, возможно, ваша жизнь станет легче!
Простой пример DLL
Автор: Steve Schafer
library MyDll;
uses Windows;
function SomeFunc(I: Integer): Integer; stdcall; begin if Odd(I) then Result := 3 * I + 1 else Result := I div 2; end;
exports SomeFunc;
begin end. |
И вот модуль импорта, который вы можете включить в любой проект, которому необходим доступ к функциям DLL:
unit MyDllImport;
interface
uses Windows;
function SomeFunc(I: Integer): Integer; stdcall;
implementation
function SomeFunc; external 'mydll.dll';
end. |
Простой шаблон для Delphi DLL |
П
Без модулей Во-первых, "скелет" DLL, которую вы хотели, сохраняете как DLLFRAME.DPR: {---------------------DLLFRAME.DPR--------------------------} library Dllframe; uses WinTypes; function GetString : string ; export ; begin Result := 'Привет из DLL!' ; end; exports GetString; begin end. {-----------------------------------------------------------} Теперь напишем вызывающую программу и сохраним ее как DLLCALL.DPR: {---------------------DLLCALL.DPR---------------------------} program Dllcall; uses Dialogs; {$R *.RES} function GetString : string ; far ; external 'DLLFRAME' ; begin MessageDlg( GetString, mtInformation, [ mbOK ], 0 ) ; end. С модулями Код вызывающей программы, сохраните ее как DLLCALL.DPR: {---------------------DLLCALL.DPR---------------------------} program Dllcall; uses Dialogs; {$R *.RES} function GetString : string ; far ; external 'MyDLL' ; begin MessageDlg( GetString, mtInformation, [ mbOK ], 0 ) ; end. {-----------------------------------------------------------} "скелет" DLL, которую вы хотели, сохраняете как DLLFRAME.DPR: face="Courier New" size="2"> {---------------------DLLFRAME.DPR--------------------------} library Dllframe; uses DLLUnit; exports GetString; begin end. {-----------------------------------------------------------} Модуль, который мы сохраняем как dllunit.pas: {---------------------dllunit.pas--------------------------} unit DLLUnit; interface uses WinTypes; function GetString: string; export; implementation function GetString: string; begin GetString := 'Привет из DLL!' ; end ; begin end. |