显式例子:
الوحدة الرئيسية ؛
واجهة
يستخدم
Windows ، الرسائل ، sysutils ، المتغيرات ، الفئات ، الرسومات ، عناصر التحكم ، النماذج ،
مربعات الحوار ، stdctrls ، extctrls ، الشبكات ، dbgrids ، db ، dbtables ، dbctrls ؛
يكتب
tform1 = فئة (tform)
Button1: Tbutton ؛
EDIT1: TEDIT ؛
EDIT2: TEDIT ؛
Image1: Timage ؛
DataSource1: tdatasource ؛
الجدول 1: ttable ؛
Table1speciesno: Tfloatfield ؛
Table1Category: Tstringfield ؛
Table1Common_Name: Tstringfield ؛
Table1 speciesName: Tstringfield ؛
Table1LengthCM: Tfloatfield ؛
table1length_in: tfloatfield ؛
Table1notes: tmemofield ؛
Table1Graphic: Tgraphicfield ؛
dbGrid1: tdbgrid ؛
الإجراءات button1click (المرسل: tobject) ؛
خاص
{إعلانات خاصة}
عام
{الإعلانات العامة}
نهاية؛
// وظيفة getInteger (i: integer): integer ؛ stdcall ؛ خارجي 'dllone.dll' ؛
// وظيفة getDouble (f: double): double ؛ stdcall ؛ خارجي 'dllone.dll' ؛
tgetDouble = function (f: double): double ؛ stdcall
var
Form1: Tform1 ؛
تطبيق
{$ r *.dfm}
الإجراء tform1.button1click (المرسل: tobject) ؛
var D: Double ؛
Dllhandle: Thandle ؛
Func: TgetDouble ؛
يبدأ
Image1.Picture.Assign (Table1Graphic) ؛
Table1Graphic.Assign (Image1.Picture) ؛
مخرج؛
dllhandle: = loadlibrary ('dllone.dll') ؛
يحاول
func: = getProcadDress (dllhandle ، 'getDouble') ؛
//edit1.text: = inttoStr (getInteger (2)) ؛
// D: = getDouble (2.2) ؛
إذا تم تعيينه (func) ثم
يبدأ
D: = func (2.2) ؛
edit2.text: = floattostr (d) ؛
نهاية؛
أخيراً
Freelibrary (dllhandle) ؛
نهاية؛
نهاية؛
نهاية.
隐式例子:
مكتبة dllone
يستخدم
sysutils ،
الطبقات
{$ r *.res}
وظيفة getDoubleExt (f: double): double ؛ stdcall ؛ خارجي 'dlltwo.dll' ؛
وظيفة getInt (i: integer): integer ؛ stdcall ؛ خارجي 'dlltwo.dll' ؛
وظيفة getInteger (i: integer): integer ؛ stdcall ؛
يبدأ
النتيجة: = getint (i) ؛
نهاية؛
وظيفة getDouble (d: double): double ؛ stdcall ؛
يبدأ
النتيجة: = getDoubleExt (D) ؛
نهاية؛
صادرات
getInteger ،
getDouble
يبدأ
نهاية.
مكتبة dlltwo ؛
{ملاحظة مهمة حول إدارة ذاكرة DLL: يجب أن يكون شاريم
الوحدة الأولى في شرط استخدامات مكتبتك ومشروعك (حدد
يستخدم مصدر عرض المشروع) شرطًا إذا قام DLL بتصدير أي إجراءات أو
الوظائف التي تمر السلاسل كمعلمات أو نتائج الوظائف. هذا
ينطبق على جميع الأوتار التي تم تمريرها من وإلى DLL الخاص بك-حتى تلك التي
متداخلة في السجلات والفصول. Sharemem هي وحدة الواجهة إلى
Borlndmm.dll مشترك مدير الذاكرة ، والذي يجب نشره على طول
مع DLL الخاص بك. لتجنب استخدام borlndmm.dll ، تمرير معلومات السلسلة
باستخدام معلمات PCHAR أو ShortString. }
يستخدم
sysutils ،
الطبقات
{$ r *.res}
وظيفة getDoubleExt (d: double): double ؛ stdcall ؛
يبدأ
النتيجة: = د ؛
نهاية؛
وظيفة getint (i: integer): integer ؛ stdcall ؛
يبدأ
النتيجة: = i ؛
نهاية؛
صادرات
getDoubleStext ،
getint
يبدأ
نهاية.