استفاده از DLL‌ها در دلفی - تالار گفتمان آذر فروم





دعوت به همکاری با آذر فروم

 

استفاده از DLL‌ها در دلفی
زمان کنونی: 21-09-1395،01:32 ب.ظ
کاربران در حال بازدید این موضوع: 1 مهمان
نویسنده: Friga
آخرین ارسال: Friga
پاسخ: 2
بازدید: 207

 
 
رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5

موضوع: استفاده از DLL‌ها در دلفی
ارسال: #1
استفاده از DLL‌ها در دلفی
پست‌ها: 11,943
تاریخ عضویت: 20 اردیبهشت 1390
اعتبار: 288
حالت من: Shad
ایجاد یک DLL

با استفاده از منو فایل گزینه New Items را انتخاب کنید و آیتم DLL Wizard را انتخاب نمایید. حال به فایل ایجاد شده، یک فرم با استفاده از روش بالا اضافه نمایید. دقت نمایید که Application را بجای فرم انتخاب ننمایید. حال اگر فرض کنیم که نام فرم شما Demo باشد و بانام UDemo.pas آنرا ذخیره کرده باشید. باید در فایل DLL بصورت زیر کد نویسی نمایید:

کد:
library demodll;


{ Important note about DLL memory management: ShareMem must be the

first unit in your library's USES clause AND your project's (select

Project-View Source) USES clause if your DLL exports any procedures or

functions that pass strings as parameters or function results. This

applies to all strings passed to and from your DLL--even those that

are nested in records and classes. ShareMem is the interface unit to

the BORLNDMM.DLL shared memory manager, which must be deployed along

with your DLL. To avoid using BORLNDMM.DLL, pass string information

using PChar or ShortString parameters. }



uses

SysUtils,

Classes,

UDemo in 'UDemo.pas' {Demo};



{$R *.res}

procedure ShowdemoForm;stdcall;

begin

Demo :=Tdemo.Create(nil);

demo.Show;

end;



function ShowdemoFormModal:integer;stdcall;

begin

demo :=Tdemo.Create(nil);

Result := demo.ShowModal;

end;



Exports

ShowDemoForm,

ShowdemoFormModal;

begin

end.
دقت کنید که نام DLL فوق DemoDll می باشد و با نام DemoDll.dpr ذخیره گردیده است.

حال بر روی فرم موجود تمام دکمه‌ها و آبجکت‌های مورد نظرتان را اضافه و کد نویسی کنید (اختیاری). در پایان در منو Project گذینه Build DemoDll را انتخاب کرده و اجرا نمایید. فایلی با نام DemoDll.dll ایجاد می گردد که برای استفاده آماده است.
















دورمچم به جای ساعت یکنوار مشکی بستم
تا همه بفهمن من از همه هر چه زمانو متعلق به زمان است بیزارم
من هم روزی قلبی داشتم
که توسط مردمانی ازمیان شما شکست و شکست تا سنگی شد
واکنون روزگاریست که شیطان فریاد میزند..
انسان پیدا کنید سجده خواهم کرد...


=====ஜ۩۞۩ஜ=====

18-05-1391 12:55 ق.ظ
 
ارسال: #2
RE: استفاده از DLL‌ها در دلفی
پست‌ها: 11,943
تاریخ عضویت: 20 اردیبهشت 1390
اعتبار: 288
حالت من: Shad
استفاده از یک DLL بصورت دینامیکی
برای استفاده از یک DLL ‌بصورت دینامیکی، ابتدا نام توابعی را که در فایل DLL شما موجود است بصورت زیر تعریف نمایید:

کد:
unit UMain;



interface



uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls;



type

TShowdemoFormModal= Function :integer;

.

.

.

دقت کنید که نام برنامه انتخابی پیش فرض Main و با نام UMain.pas ذخیره گشته است. حال برای لود کردن DLL یادشده، یک دکمه بر روی فرم قرارداده آنرا بصورت زیر کد نویسی کنید:

کد:
var

hndDLLHandle:THandle;

ShowdemoFormModal:TShowdemoFormModal;



procedure TFMain.Button1Click(Sender: TObject);

begin

try

hndDLLHandle:=LoadLibrary('Demodll.dll');



if hndDLLHandle <> 0 then begin

@ShowdemoFormModal:=getProcAddress(hndDLLHandle,'ShowdemoFormModal');



if addr(ShowdemoFormModal) <> nil then begin

ShowdemoFormModal;

end

else

showmessage ('function not exists ...');

end

else

showMessage('Dll Not Found!');

finally

freelibrary(hndDLLHandle);

end;

end;

فرم شما آماده اجراست. در پایان متذکر می شوم که استفاده ار روش دینامیکی در لود کردن DLL ها باعث پایین آمدن سرعت نمایش فرم‌ها و در عوض بالارفتن سرعت برنامه خواهد شد.
















دورمچم به جای ساعت یکنوار مشکی بستم
تا همه بفهمن من از همه هر چه زمانو متعلق به زمان است بیزارم
من هم روزی قلبی داشتم
که توسط مردمانی ازمیان شما شکست و شکست تا سنگی شد
واکنون روزگاریست که شیطان فریاد میزند..
انسان پیدا کنید سجده خواهم کرد...


=====ஜ۩۞۩ஜ=====

18-05-1391 12:57 ق.ظ
 


[-]
پاسخ سریع
پیام
پاسخ خود را برای این پیام در اینجا بنویسید.


کد تصویری
royalfuns
(غیر حساس به بزرگی و کوچکی حروف)
لطفاً کد نشان داده شده در تصویر را وارد نمایید. این اقدام جهت جلوگیری از ارسال‌های خودکار ضروری می‌باشد.

موضوعات مشابه ...
موضوع: نویسنده پاسخ: بازدید: آخرین ارسال
  محدودکردن تغییر اندازه فرم در دلفی Friga 0 262 18-05-1391 12:57 ق.ظ
آخرین ارسال: Friga
  نمایش میزان کپی شدن فایل با ProgressBar در دلفی Friga 1 302 18-05-1391 12:54 ق.ظ
آخرین ارسال: Friga
  تاریخچه زبان دلفی Friga 6 423 18-05-1391 12:52 ق.ظ
آخرین ارسال: Friga
  نصب ProgressBar روی StatusBar در دلفی Friga 0 223 18-05-1391 12:49 ق.ظ
آخرین ارسال: Friga
  ساخت یک بانک اکسس در دلفی Friga 0 299 18-05-1391 12:46 ق.ظ
آخرین ارسال: Friga

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان