انشاء ملف دي ال ال dll واستدعائه

اذهب الى الأسفل

انشاء ملف دي ال ال dll واستدعائه

مُساهمة  ali1 في 27/3/2017, 9:33 pm


بسم الله الرحمن الرحيم
الصلاة السلام على رسول الله

انشاء ملف دي ال ال dll واستدعائه

كيفية انشاء ملف DLL بـــ Delphi
واستدعائه بــــبرنامج دلفي Delphi


fichier -> nouveau -> export dll -> ok

ملف دي ال ال

Liprary مكتبة


الكود:

library TestDll;

uses
  SysUtils, Classes;

{$R *.res}

function TestMax(i, j: Integer):Integer;  stdcall;
begin
 if i > j then Result := i
  else  Result := j;
end;

function TestMin(i, j: Integer):Integer;  stdcall;
begin
 if i < j then Result := i
  else  Result := j;
end;

exports 
  TestMax name 'Maxs',
      TestMin name 'Mins';
     
begin
end.




انشاء مشروع جديد
fichier -> nouveau -> application -> ok

ضع فوق الفورم
اثنان TEdit و اربعة TLabel و اثنان TButton

الكود:


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Button2: TButton;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private public
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

type
  TestMax1 = function(TM1, TM2: integer): integer; stdcall;
  TestMin1 = function(TM1, TM2: integer): integer; stdcall;
  THandle = Integer;

procedure TForm1.Button1Click(Sender: TObject);
const
 // اسم ملف dll
 //  أو المكتبة
 NomDll = 'TestDll.dll';
 
var
    hDll: THandle;
    Max1: TestMax1;
    Min1: TestMin1;
    i, j: Integer;

begin
 //  تحميل ملف أو مكتبة dll
 hDll := LoadLibrary(PChar(NomDll));
 if hDll <> 0 then
 begin
 // الاتصال بالدالة التي تخرج العدد الاكبر
  @Max1 := GetProcAddress(hDll,'Maxs');
 // تجلب  العدد الاصغر من ملف دي ال ال
  @Min1 := GetProcAddress(hDll,'Mins');
 // ارسال القيم الى الدالتين
  i := Max1(strtoint(Edit1.Text),strtoint(Edit2.Text));
  j := Min1(strtoint(Edit1.Text),strtoint(Edit2.Text));
  // عرض النتيجة
  Label1.Caption := 'Plus grand entier : '+inttostr(i);
  Label2.Caption := 'Plus petit entier : '+inttostr(j);
  // تحرير الذاكرة من المتغير
  FreeLibrary(hDll);
 end else
  ShowMessage(' خطأ في تحميل ملف دي ال ال');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 close;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 if MessageDlg('Voulez-vous vraiment fermer l''application ?',
    mtWarning, [mbYes,mbNo],0)=mrYes then
    Action :=caFree
  else
  Action :=caNone;
end;

end.


_________________
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]

ali1
مبرمج مجتهد

عدد المساهمات : 858
تاريخ التسجيل : 29/07/2013

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: انشاء ملف دي ال ال dll واستدعائه

مُساهمة  ali1 في 27/3/2017, 10:45 pm

المرفق على الرابط
sites.google.com/site/site111dz/delphi/creatdllandcall

_________________
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]

ali1
مبرمج مجتهد

عدد المساهمات : 858
تاريخ التسجيل : 29/07/2013

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى