تبليغاتX
دلفی باز - ساخت DLL
دلفی_مهندسی عمران
بخش اول - ساخت DLL


استفاده از DLL و كدهاي داخل آن بهترين راه حل براي برنامه شما مي باشد
چرا كه در آينده اگر قصد تغييراتي در برنامه خود را داشته باشيد مي توانيد
با ويرايش اين DLL آن تغييرات را اعمال كنيد.

با ساخت دستورات و عملكردهاي گوناگون در DLL مي توانيد سورس كد
راحت تر و منظم تري در برنامه اصلي خود داشته باشيد. يكي ديگر از مزاياي
DLL قابليت Update نرم افزار مي باشد. به طور مثال فرض كنيد برنامه شما از
يك DLL براي دستورات خود استفاده مي كند. اگر در آينده نياز به تغييراتي
در آن داشته باشيد ، مي توانيد DLL خود را تغيير دهيد و از كاربران بخواهيد
تا به جاي تغيير دادن كل برنامه شما ، فقط DLL مربوطه را تغيير دهند تا
برنامه شما عملكرد جديدي داشته باشد.


ضمناْ به ياد داشته باشيد DLL نوشته شده در هر زباني قابل استفاده در
زبانهاي برنامه نويسي ديگر نيز مي باشند .
پس به خاطر داشته باشيد استفاده از DLL ها مزاياي فراواني را به شما
در برنامه نويسي مي دهد.

چگونگي ساخت DLL در دلفي ...

ساختن يك DLL در دلفي بسيار آسان مي باشد. فقط لازم است كه در
هنگام ساخت ، حواستان به تمامي دستورات باشد تا نتيجه خوبي در
اجراي آن بگيريد . حال بياييد قدم به قدم اولين DLL خود را درست كنيم :




ابتدا از منوي File گزينه New و سپس Other را انتخاب نماييد.



سپس مطابق شكل گزينه DLL Wizard را انتخاي كرده و OK را فشار دهيد.






اكنون فرمي باز شده كه حاوي يك سري توضيحات مي باشد. اين فايل را
با نام MyDll.dpr ذخيره كنيد.
اكثر كتابهاي دلفي يا دوستاني كه در اين رابطه مطلبي نوشته اند به شما
مي گويند كه تمامي دستورات و متدهاي خود را در اين فايل بنويسيد. اما
اگر مي خواهيد فايل DLL شما به صورتي مرتب باشد ، شما بايد فايلهاي خود
را طبقه بندي و جدا نماييد كه من اين روش را به شما پيشنهاد مي كنم.


از منوي File گزينه New و سپس Unit را انتخاب نماييد



اكنون اين فايل را با نام uDll.pas در همان شاخه اي كه فايل قبلي خود را
با نام MyDll.dpr قرار داديد ، ذخيره نماييد.

براي يك شروع آسان اجازه دهيد عملكردي بنويسيم كه يك رشته را گرفته
و يك مقدار Boolean را برمي گرداند. اين اولين دستور ما در فايل DLL مي باشد.

فايل جديد باز شده را به صورت زير تغيير دهيد :
كد:

unit uDLL;

interface

uses Dialogs;

function DisplayMsg(s:String):Boolean;stdcall;

implementation

function DisplayMsg(s:String):Boolean; stdcall;
begin
ShowMessage(s);
Result := True;
end;

end.

*** فراموش نكنيد كه عبارت uses Dialogs را دقيقاْ در جاي خودش
قرار دهيد ، در غير اين صورت پيغام خطا دريافت خواهيد كرد.
در انتها فايل خود را ذخيره كنيد و آن را ببنديد.


حال نوبت استفاده از عملكرد ساخته شده در DLL مي باشد. در اصطلاح اين
عمل ، يعني اجازه استفاده از دستورات داخل DLL را Exports مي گويند.
اكنون دوباره فايل MyDll.dpr را كه در ابتدا ساخته بوديم باز كنيد .
همان طور كه در ابتداي فايل مشاهده مي نماييد ، توضيحاتي مربوط به
استفاده از يونيت ShareMem در صورت استفاده از رشته هاي استاندارد
دلفي و رد شدن آنها بين DLL و برنامه خود ، نوشته شده است.
اين بدين خاطر است كه در برخي مواقع استفاده از PChar بهتر از حالت
معمول مي باشد . به خصوص در حالت دلفي و C .

اگر شما تصميم به استفاده از ShareMem گرفته ايد مي بايست فايلي با
نام borlndmm.dll را به همراه برنامه خود منتشر نماييد. اين فايل حاوي
دستورات مربوط به رد شدن رشته ها و ... مي باشد. اين فايل مي بايست
در شاخه برنامه شما ، يا يكي از شاخه هاي سيستمي ويندوز قرار بگيرد.
من شخصاْ شاخه System ويندوز را ترجيح مي دهم.

البته اگر تمايلي به استفاده از دستورات رد و بدل رشته ها در DLL خود را
نداشتيد ، ديگر نيازي به اين همه دنگ و فنگ نداريد !

به فايل اصلي خودمان يعني MyDll.dpr باز مي گرديم. در اين مثال به خاطر
اينكه من در عملكرد خود ، از رشته ها استفاده كردم ، مي بايست در خط
uses برنامه ، گزينه ShareMem را اضافه كنيم .

كلمه كليدي ، همان طور كه قبلاْ توضيح دادم ، Exports مي باشد كه به
برنامه هاي ديگر مي گويد كه كدام دستور در داخل DLL قابل اجرا مي باشد.


پس كد ما به اين صورت مي شود :
كد:

library Mydll;

uses ShareMem,
SysUtils,
Classes,
uDLL in 'uDLL.pas';

{$R *.RES}

exports DisplayMsg;

begin
end.


در انتها فايل خود را كامپايل كنيد .
كار ساخت DLL تمام شد ! به شاخه ضبط فايل خود برويد و فايل DLL را مشاهده
كنيد. حال شما قادر هستيد تا از اين DLL در برنامه خودتان استفاده نماييد.


در انتها من توضيحي در رابطه به stdcall ، كه در فايل اول استفاده كرديم
مي دهم و اصولاْ چرا از اين دستور استفاده كردم ؟
همان طور كه در ابتداي بحث گفتم يكي از قابليتهاي DLL ها استفاده آنها
در تمامي برنامه ها مي باشد. به طور مثال DLL ساخته شده در دلفي
مي تواند در Visual Basic ، Visual C و ... استفاده شود.

كلمه كليدي stdcall نيز به همين معني در انتهاي دستورات گنجانده شده.
اين كلمه به دلفي مي گويد تا اين دستور را به صورتي ترجمه كن كه ويندوز
قابليت شناسايي آن را داشته باشد و زماني كه ويندوز قابليت شناسايي
اين دستور را داشته باشد ، برنامه هاي ديگر هم اين قابليت را پيدا مي كنند.

استفاده از اين دستور بستگي به تصميم شما دارد كه آيا قرار است فايل DLL
شما در برنامه هاي ديگر هم استفاده شود يا خير ؟
در صورتي كه تصميم به استفاده از DLL فقط در دلفي داريد ، مي توانيد
به جاي دستور فوق ، از دستور register در انتهاي خطوط استفاده نماييد.
اما استفاده از stdcall ، خاطر شما را در استفاده از DLL در آينده راحت
مي سازد. چرا كه ممكن است روزي بخواهيد فايل DLL خود را در زبان
برنامه نويسي ديگري استفاده نماييد.

در بخش بعدي به شما نشان خواهم داد تا چگونه از اين DLL ساخته شده
در برنامه خود استفاده نماييد.

موفق باشي
+ نوشته شده در  چهارشنبه دوم فروردین 1385ساعت 2:14  توسط حمید رادان  |