ДИНАМИЧЕСКАЯ ЗАГРУЗКА DLL
===================
При динамической загрузке требуется написать немного больше кода.
А вот как это выглядит:
Code: |
unit untMain;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type Tcalc_double = function ( r: real ): real;
TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject); var hndDLLHandle: THandle; calc_double: Tcalc_double; begin try // загружаем dll динамически hndDLLHandle := loadLibrary ( 'ExDouble.dll' );
if hndDLLHandle <> 0 then begin
// получаем адрес функции @calc_double := getProcAddress ( hndDLLHandle, 'calc_double' );
// если адрес функции найден if addr ( calc_double ) <> nil then begin // показываем результат ( 21...) showMessage ( floatToStr ( calc_double ( 10.5 ) ) ); end else // DLL не найдена ("handleable") showMessage ( 'Function not exists...' );
end else // DLL не найдена ("handleable") showMessage ( 'DLL not found...' );
finally // liberar freeLibrary ( hndDLLHandle ); end; end;
end. |
- << Назад
- Вперёд
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!