显式例子:
unidade principal;
interface
usos
Janelas, mensagens, sysutils, variantes, classes, gráficos, controles, formulários,
Diálogos, stdctrls, extctrls, grades, dbgrids, db, dbtables, dbctrls;
tipo
Tform1 = classe (tform)
Button1: tbutton;
Edit1: TEDIT;
Edit2: TEDIT;
Image1: Timage;
DataSource1: TDataSource;
Tabela1: ttable;
Tabela1Speciesno: Tfloatfield;
Tabela1Category: TStringfield;
Tabela1common_name: tstringfield;
Tabela1SpeciesName: TStringfield;
Tabela1LengthCM: Tfloatfield;
Tabela1Length_in: tfloatfield;
Tabela1Notes: TMemofield;
Tabela1Graphic: Tgraphicfield;
DbGrid1: tdbGrid;
Procedimento Button1Click (remetente: Tobject);
privado
{Declarações privadas}
público
{Declarações públicas}
fim;
// função getInteger (i: inteiro): inteiro; stdcall; externo 'dllone.dll';
// function getDouble (f: duplo): duplo; stdcall; externo 'dllone.dll';
Tgetdouble = função (f: duplo): duplo; stdcall;
var
Form1: TForm1;
implementação
{$ R *.dfm}
procedimento TForm1.Button1Click (remetente: TOBJECT);
var d: duplo;
Dllhandle: Thandle;
Func: tgetdouble;
começar
Image1.picture.assign (Table1graphic);
Tabela1graphic.assign (Image1.Picture);
Saída;
DllHandle: = loadlibrary ('dllone.dll');
tentar
@Func: = getProcaddress (dllHandle, 'getDouble');
//Edit1.text: = inttostr (getInteger (2));
// d: = getDouble (2.2);
se atribuído (@func), então
começar
D: = func (2.2);
Edit2.text: = floattostr (d);
fim;
finalmente
Freelibrary (DllHandle);
fim;
fim;
fim.
隐式例子:
Dllone da biblioteca;
usos
Sysutils,
Classes;
{$ R *.res}
função getDoubleExt (f: duplo): duplo; stdcall; externo 'dlltwo.dll';
função getInt (i: inteiro): número inteiro; stdcall; externo 'dlltwo.dll';
função getInteger (i: inteiro): inteiro; stdcall;
começar
Resultado: = getInt (i);
fim;
função getDouble (d: duplo): duplo; stdcall;
começar
Resultado: = getDoubleExt (d);
fim;
exportações
Getinteger,
Getdouble;
começar
fim.
biblioteca dlltwo;
{Nota importante sobre o gerenciamento de memória DLL: sharemem deve ser o
Primeira unidade na cláusula de usos da sua biblioteca e do seu projeto (selecione
Fonte de visualização do projeto) usa a cláusula se sua DLL exportar qualquer procedimento ou
funções que passam strings como parâmetros ou resultados da função. Esse
aplica-se a todas as cordas passadas de e para sua DLL-mesmo aquelas que
são aninhados em registros e classes. Sharemem é a unidade de interface para
O Borlndmm.dll compartilhou o gerenciador de memória, que deve ser implantado junto
com sua DLL. Para evitar o uso de Borlndmm.dll, passe informações de string
usando parâmetros de PChar ou SHORTSTRING. }
usos
Sysutils,
Classes;
{$ R *.res}
função getDoubleExt (d: duplo): duplo; stdcall;
começar
Resultado: = d;
fim;
função getint (i: integer): inteiro; stdcall;
começar
Resultado: = i;
fim;
exportações
GetDoubleExt,
Getint;
começar
fim.