في الوقت الحاضر، يتم تنفيذ معظم عمليات تطوير النظام بطريقة تعاونية مع مجموعة من الأشخاص أو أكثر، مما يسهل أيضًا التطوير السريع للنظام.
تعتبر طريقة DLL هي الأكثر ملاءمة. لقد قمت بتجميع بعض المعلومات في هذا المجال، على أمل مساعدة بعض الطلاب المحتاجين (أتذكر أنه عندما بدأت التعلم لأول مرة، كان طلب النصيحة أمرًا غير وارد). //(نسخ الكتاب المصدر)
1. كيفية كتابة الإجراءات الوظيفية:
LibraryFIRSTDLL;
الاستخدامات
سيسوتيلس,
الطبقات؛
{$R *.RES}
// 1. تحديد العملية المحددة ووضع واجهة الإخراج للوظيفة
//--------------------------------
// الوظيفة 1
// الوظيفة: وظيفة تضخيم البيانات 3x
//--------------------------------
الدالة BBnToSSnn(SourceResult:Integer):Integer;stdCall;
يبدأ
إذا SourceResult> 0 ثم
Result:=SourceResult+3 // يتم تخزين النتيجة في Result
آخر
النتيجة:=SourceResult;
نهاية؛
صادرات
BBnToSSnn; //2
نهاية.
==
==
2. إنشاء نموذج في DLL
========================================================================
1. في خطوة واحدة، قم بإنشاء مشروع DLL وأضف النموذج المحدد
مكتبة MGRPERSN؛
الاستخدامات
سيسوتيلس,
الطبقات،
MGRPERFM في 'MGRPERFM.pas' {FormPERSON}؛//1.رمز النموذج (مثل النموذج العادي)
{$R *.RES}
صادرات
ShowPerSN;//2.تعريف منفذ الإخراج
يبدأ
نهاية.
2. إعدادات النموذج المعينة في DLL
==================================================================================
وحدة MGRPERFM؛
واجهة
الاستخدامات
Windows، الرسائل، SysUtils، الفئات، الرسومات، عناصر التحكم، النماذج، مربعات الحوار،
كومCtrls، تولوين، إمجليست؛
يكتب
TFormPERSON = الفئة(TForm)
خاص
{تصريحات خاصة}
عام
{التصريحات العامة}
نهاية؛
// المتغيرات الموجودة في هذه الأماكن لم تعد مستخدمة، قم بتغييرها إلى مكان آخر، كما يلي (قم بتغيير واحد)
//فار
// FormPERSON: TFormPERSON;
{الإعلان عن خروج وظيفة النموذج}//التغيير 2
وظيفة ShowPerSN(Ahandle: Thandle; ACaption: String):BOOL;
تطبيق
{$R *.DFM}
// تعريف عملية بيانات الوظيفة
وظيفة ShowPerSN(Ahandle: Thandle; ACaption: String):BOOL;
فار
FormPERSON: TFormPERSON; // تحديد فئة النموذج (يتم وضع ما ورد أعلاه هنا)
يبدأ
// انسخ مؤشر التطبيق إلى كائن البرنامج المناسب لـ DLL
application.Handle := AHandle;
FormPERSON := TFormPERSON.Create(Application);//إنشاء عنصر التحكم TForm
يحاول
FormPERSON.Caption := ACaption;
FormPERSON.ShowModal;// أظهر هذا النموذج
النتيجة: = خطأ؛ // إرجاع قيمة النجاح
أخيراً
FormPERSON.Free;
نهاية؛
نهاية؛
3. استدعاء الوظائف والنماذج في DLL
===========================================================
1. طريقة الاتصال الأولى
---------------
التنفيذ // أسفل هذا، اكتب ملف DLL الذي يستدعي الوظيفة
{$R *.DFM}
// استدعاء الدالة داخل DLL
الدالة BBnToSSnn(SourceResult:Integer):Integer;
StdCall خارجي "FIRSTDLL.DLL"؛
........
2. طريقة الاتصال الثانية
=============
اكتب // أنشئ فئة دالة هنا
// 1 ----------------------------------
TShowPerSN = الوظيفة (Ahandle: Thandle؛ ACaption: String): BOOL؛
EDLLLoadError = class(Exception); // أنشئ فئة سجل خطأ في نفس الوقت
// 1 ----------------------------------
TMAINCLTR = class(TForm) // لا يوجد تغيير هنا، يقوم النظام بإنشائه تلقائيًا
...
الإجراء TMAINCLTR.ToolButton1Click(Sender: TObject);
var // حدث استدعاء الزر: عملية الاتصال
LibHandle: Thandle؛
شوبيرسن: تشوبيرسن؛
يبدأ
Application.Title:='برنامج اختبار ملف DLL لنظام إدارة الموارد البشرية';
{محاولة تحميل ملف DLL محاولة تحميل ملف DLL}
LibHandle := LoadLibrary('MGRPERSN.DLL');
يحاول
إذا كان LibHandle = 0 إذن
رفع EDLLLoadError.Create('تعذر تحميل MGRPERSN.DLL بنجاح');
@ShowPerSN := GetProcAddress(LibHandle, 'ShowPerSN');
إذا لم يكن الأمر كذلك (@ShowPerSN = لا شيء) إذن
ShowPerSN(Application.Handle، 'إدارة معلومات الموظفين')//استدعاء النموذج
آخر
RaiseLastWin32Error;
أخيراً
FreeLibrary(LibHandle);
نهاية؛
نهاية؛
==========================النهاية
مدونة المؤلف: http://blog.csdn.net/dgc/