SpareNet Servers Advertising & Link Exchange

اطلاعیه

بستن
هیچ اطلاعیه ای هنوز ایجاد نشده است .

استفاده از dllها در دلفی

بستن
X
 
  • فیلتر
  • زمان
  • نمایش
پاک کردن همه
نوشته‌های جدید

  • استفاده از 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.
    حال بر روی فرم موجود تمام دکمه ها و آبجکتهای مورد نظرتان را اضافه و کد نویسی کنید (اختیاری). در پایان در منو Project گذینه Build DemoDll را انتخاب کرده و اجرا نمایید. فایلی با نام DemoDll.dll ایجاد می گردد که برای استفاده آماده است.


    استفاده از یک 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;
صبر کنید ..
X