显式例子:
unité principale;
interface
usages
Windows, messages, systèmes, variantes, classes, graphiques, contrôles, formulaires,
Dialogues, stdctrls, extctrls, grilles, dbgrids, db, dbtables, dbctrls;
taper
Tform1 = classe (tform)
Button1: Tbutton;
Edit1: Tedit;
Edit2: Tedit;
Image1: Timage;
DataSource1: tdataSource;
Tableau 1: tTable;
TABLE1SCECESNO: TFLOATFIELD;
TABLE1CATECHE: TSTRINGFIELD;
TABLE1COMMON_NAME: TSTRINGFIELD;
TABLE1SCECIESNAME: TSTRINGFIELD;
TABLE1LENGTHCM: TFLOATFIELD;
Table1Length_in: tfloatfield;
TABLE1NOTES: TMEMOFIELD;
Tableau1Graphic: Tgraphicfield;
Dbgrid1: tdbgrid;
Procédure Button1Click (expéditeur: tobject);
privé
{Déclarations privées}
publique
{Déclarations publiques}
fin;
// fonction getInteger (i: Integer): entier; stdcall; external 'dlone.dll';
// fonction getDouble (f: double): double; stdcall; externe 'dlone.dll';
TGetDouble = fonction (f: double): double; stdcall;
var
FORM1: TFORM1;
mise en œuvre
{$ R * .dfm}
Procédure tform1.button1Click (expéditeur: tobject);
var d: double;
DllHandle: Thandle;
Func: tgetDouble;
commencer
Image1.picture.assign (Table1Graphic);
TABLE1GRAPHIC.Assign (image1.picture);
Sortie;
DllHandle: = loadLibrary ('dlone.dll');
essayer
@Func: = getProcAddress (dllHandle, 'getDouble');
//Edit1.Text: = intToStr (getInteger (2));
// d: = getDouble (2.2);
si elle est affectée (@func) alors
commencer
D: = func (2.2);
Edit2.text: = floAttoStr (d);
fin;
enfin
Freelibrary (dllhandle);
fin;
fin;
fin.
隐式例子:
bibliothèque dllone;
usages
Sysutils,
Classes
{$ R * .res}
fonction getDoubleExt (f: double): double; stdcall; externe 'dlltwo.dll';
function getInt (i: entier): entier; stdcall; externe 'dlltwo.dll';
fonction getInteger (i: Integer): entier; stdcall;
commencer
Résultat: = getInt (i);
fin;
fonction getDouble (d: double): double; stdcall;
commencer
Résultat: = getDoubleExt (d);
fin;
exportations
GetInteger,
GetDouble;
commencer
fin.
bibliothèque dlltwo;
{Remarque importante concernant la gestion de la mémoire DLL: le partagem doit être le
La première unité de la clause d'utilisation de votre bibliothèque et celle de votre projet (sélectionnez
Source de vue de projet) utilise la clause si votre DLL exporte des procédures ou
Fonctions qui passent les chaînes comme paramètres ou résultats de fonction. Ce
s'applique à toutes les chaînes passées à et depuis votre DLL - même celles qui
sont imbriqués dans les dossiers et les classes. ShareMem est l'unité d'interface de
le Borlndmm.dll partagé le gestionnaire de mémoire partagée, qui doit être déployé
avec votre DLL. Pour éviter d'utiliser Borlndmm.dll, passez des informations sur les chaînes
Utilisation de paramètres PCHA ou Courtstring. }
usages
Sysutils,
Classes
{$ R * .res}
fonction getDoubleExt (d: double): double; stdcall;
commencer
Résultat: = D;
fin;
fonction getInt (i: entier): entier; stdcall;
commencer
Résultat: = i;
fin;
exportations
GetDoubleExt,
Getint;
commencer
fin.