دلفي تعليم
مرحبا بكم ايها الزئر أو الزائرة الكريمين

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

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

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

مُساهمة  alla في 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.


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

alla
مبرمج مجتهد

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

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

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

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

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

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

alla
مبرمج مجتهد

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

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

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة


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