منتدى تعليمي
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

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

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

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

مُساهمة من طرف salme الثلاثاء يناير 24, 2017 11:19 pm

الكود:

library Project1;

uses SysUtils, Classes;

{$R *.res}

function Addition(a1,b1: integer): integer; stdcall;
begin
  Addition := a1+b1;
end;
 exports  Addition;

begin
end.

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

DLL

واستدعائه بدلفي

بسم الله الرحمن الرحيم

و الصلاة و السلام على رســـول الله

farao

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

------------------------

الكود:

unit Unit01;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Form1: TForm1;
 function Addition(a1,b1: integer): integer; stdcall;
 external 'TestDLL1.dll';

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
 x, y: integer;
 j: integer;

begin
 x := StrToInt(Edit1.Text);
 y := StrToInt(Edit2.Text);
 j := Addition(x, y);
 Label1.Caption := IntToStr(j);

end;

end.
----------------------------------
procedure Button1Click(Sender: TObject);

في السطر الاول تم تصريح باجراء النقر هو من نوع كائن وتتم كتابته تلقائيا

private { Déclarations privées }

منطقة لتصريح المخصص أي تصريح لبعض المتغييرات أو الاجراءات

public { Déclarations publiques }

منطقة لتصريح العام أي تصريح بعض المتغييرات أو الاجراءات

function Addition(a1,b1: integer): integer; stdcall; external 'TestDLL1.dll';

تصريح بالدالة المستعملة في البرنامج

implementation {$R *.dfm}

نهاية منطقة التصريح وبداية منطقة كتابة الاوامر أي جسم البرنامج

procedure TForm1.Button1Click(Sender: TObject);

بداية اجراء النقر

var
x, y: integer;
j: integer;

تصريح بثلاثة متغييرات من نوع صحيح داخل الاجراء

begin

بداية جسم الاجراء

x := StrToInt(Edit1.Text);

اسناد القيمة المدخلة في مربع النص الى المتغيير صحيح وذلك بعد تحويلها من سلسلة حرفية الى عدد صحيح

y := StrToInt(Edit2.Text);

عملية اسناد كسابقه أي نفس شيء

Label1.Caption := IntToStr(j);

اسناد قيمة المتغيير الى لافتة كابشن لابل الاول وذلك بعد عملية التحويل من متغيير الى سلسلة حرفية

end;
end.

نهاية الاجراء ونهاية البرناج في نفس الوقت

...

fichier -> nouveau -> export dll -> ok

ملف دي ال ال

Liprary مكتبة

stdcall;

-----------------------------
الكود:

library TestDLL1;

uses SysUtils, Classes;

{$R *.res}

function Addition(a1,b1: integer): integer; stdcall;
begin
  Addition := a1+b1;
end;
 exports  Addition;

begin
end.
-----------------
سأحاول شرح هذه الاوامر

Liprary TestDLL1;

المكتبة وهذه المكتبة لها اسم معين

begin

البداية

tesult := a1+b1;

اسناد نتيحة عملية الجمع الى الدالة أو الى اسم الدالة

exports Addition;

تصدير الدالة الى خارج المكتبة من أجل استعمالها في برامج أخرى

end.

النهاية

نستطيع كتابة دالة أو اثنان أو أكثر أو حتي اجراءات متعددة

في حالة تعدد الاجراءات والدوال
الكود:

function addition(a1,b1: integer): integer; stdcall;
begin

result := a1+b1;

end;

الكود:

function soustraction(x:integer; y: integer): integer;

result := x-y;

end;
الكود:

procedure max(k: integer; j: integer; var m: integer)

begin

if k > j then m:=k else m:=j;

end;

هذه طريقة تصدير الى البرامج المستدعية أي التي تستدعي هذه الدوال والاجراءات ونفصل بينها فاصلة

exports addition, soustraction, max;

ساشرح في موضوع آخر طريقة الارسال باسم او مؤشر name - index



salme
Admin

المساهمات : 38
تاريخ التسجيل : 20/01/2017

https://elf1.rigala.net

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

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

- مواضيع مماثلة

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