مكتبات الربط الديناميكية
dll
........................
مكتبات الربط الديناميكية هي موارد منفصلة ومستقلة ... يمكن استخدامها في أي لغة برمجة , وعادة ما تستخدم لتزويد برامجنا التنفيذية بالتوابع والإجراءات التي نكتبها بها .وما قصدتة بعبارة أنها موارد مستقلة يعني أن المكتبات التي نصممها باستخدام ديلفي يمكن استخدامها في أي لغة برمجة أخرى c++ مثلا وبالعكس كذلك .
فنقوم مثلا بكتابة مكتبة ربط تحتوي على جميع التوابع الرياضية : كتابع التربيع و تابع
الجذر و .. و .... الخ ثم نستخدمها في برامجنا المختلفة
لن أتكلم عن فوائد هذة المكتبات وفوائد فصل الإجرائيات عن البرنامج الأساسي وسوف اتكلم بإيجاز عن كيفية بنائها واستدعائها من ديلفي . وأتمنا من باقي الأخوة أن يساهمو في إفادتنا بما يعرفون عن هذا الموضوع.
1- انشاء مكتبة ربط ديناميكية :
file -> new -> other -> dllwizard .
:سوف ترى الوحدة بالشكل
...........................................................................
library Project2;
uses
SysUtils,
Classes;
{$R *.res}
begin
end.
.................................................................................
تقوم باضافة الوحدات التي سوف تستخدمها في برنامجك ثم تجري بعض التعديلات والإضافات وهي :
1- احذف عبارة begin في اخر الشفرة . وابدأ بدلا عن ذلك بكتابة التوابع والإجراءات من هذة النقطة كما في البرنامج العادي تماما,
2- بعد الانتهاء من كتابة التوابع أضف العبارة exports بمعنى تصدير وأضف بعدها اسماء التوابع والاجراءات التي تريد أن تراها البرامج الأخرى .. أي التي سوف نستخدمها في برنامجنا وبشكل مبدأي سوف نضيف أسماء كل التوابع التي كتبناها . والمهم أننا نضيف اسم التابع فقط ولا نضيف أي كلمة اخرى . كما هو موضح بالمثال التالي :
.................................................................................
library dllfile;
uses
SysUtils,dialogs, // استخدمنا الوحدة
Classes; //dialogs
// من أجل التابع
//showmessage
{$R *.res}
procedure hello; // نكتب الإجراءات والتوابع التي نريدها مثل العادة .
begin
showmessage('hello world . . . ');
end;
exports
hello ; // لاحظ اننا لم نضع الا اسم التابع
end.
....................................................................................
ثم من
Project -> compile
Project -> build
<><><><><><><><><><><><><><><><>
2- استدعاء المكتبة من البرنامج
نستطيع ببساطة استدعاء توابع المكتبة التي صنعناها في أي مكان من الشفرة ولكن علينا أولا التصريح أن هذة التوابع موجودة في ملف خارجي هو مكتبة الربط الديناميكية بالشكل التالي :
...................................................................................
implementation
{$R *.dfm}
procedure hello ; external 'dllfile.dll'; // نضيف التعريف عن رأس التابع
procedure TForm1.Button1Click(Sender: TObject);
begin
hello;
end;
end.
.................................................................................
حيث قمنا باستدعاء التابع hello أثناء الضغط على الزر بعد أن عرفنا أن التابع موجود في الملف dllfile وذلك باستخدام الكلمة المحجوزة external
الملف المرفق بحجم 211 كيلو بايت
مضغوط باستخدام وين زيب
يحوي الأمثلة مع الشفرة للمكتبة و الملف .