unit MainFrm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TMainForm = class(TForm)
btnStaticLoad: TButton;
btnDynamicLoad: TButton;
procedure btnStaticLoadClick(Sender: TObject);
procedure btnDynamicLoadClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
MainForm: TMainForm;
{ ładowanie statyczne }
procedure About; stdcall external 'SimpleDLL.dll' name 'About';
implementation
{$R *.dfm}
procedure TMainForm.btnStaticLoadClick(Sender: TObject);
begin
About; // wywołanie procedury
end;
procedure TMainForm.btnDynamicLoadClick(Sender: TObject);
var
DLL : THandle;
About : procedure;
begin
DLL := LoadLibrary('SimpleDLL.dll'); // załadowanie pliku
try
@About := GetProcAddress(DLL, 'About'); // pobranie wskaźnika do procedury
if @About = nil then raise Exception.Create('Nie można załadować procedury');
About; // wykonanie procedury
finally
FreeLibrary(DLL);
end;
end;
end.