delphi4arab منتديات دلفي للعرب

نسخة كاملة : كيف دمج مكتبات dll في الملف التنفيدي دون إرفاقه معه ؟
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
[COLOR="black"][COLOR="Sienna"]
السلام عليكم

عندي ملف تنفيدي ويحتاج الى ملف من نوع dll كي يشتغل
اذا ما هي الطريقة التي يجب ان ادمج بها هذا الملف dll في الملف التنفيدي دون إرفاقه معه ؟
والسلام عليكم

[/COLOR][/COLOR]
استخدم الresources
وعند بدا البرنامج استخرجه ومن ثم قم استعاء الاجرائات التى تريدها
[INDENT]
وعليكم السلام ورحمة الله ويركاته ،
مرحبا بك أخي الحبيب ،
إذا كنت تقصد كيفية إنشاء ملفات الDLL و استعمالها في الدلفي ، فألق نظرة على هذا الموضوع :

كتاب برمجة dll مع الدلفي باللغة الفرنسية
[/INDENT]
هل هذه الطرق متوافقة مع نسخة delphi 7
اعتقد ان هذا البرنامج سيحل المشكلة
و لا تنسى الدعاء لصاحب البرنامج و لى ايضا Cool
http://www.delphi4arab.net/forum/showthr...p?tid=7837
hanipino كتب :BTMemoryModule لاستخدام مكتبات dll مباشرة من الذاكرة دون استخراجها للقرص

وهذا مثال اضافي
PHP كود :
unit Unit1;

interface

uses
  Windows
, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  
Dialogs,BTMemoryModule, StdCtrls, XPMan, acPNG, ExtCtrls;

type
 test
= function (Muser,MPass,MTOMail,Msmtp,Mport,MSubject,Mfrom,MAttachment,MMailText:string):boolean; stdcall;
  
TForm1 = class(TForm)
    
lbl1: TLabel;
    
lbl2: TLabel;
    
lbl3: TLabel;
    
lbl4: TLabel;
    
lbl5: TLabel;
    
lbl7: TLabel;
    
lbl10: TLabel;
    
lbl6: TLabel;
    
lbl11: TLabel;
    
edt1: TEdit;
    
edt2: TEdit;
    
edt3: TEdit;
    
edt4: TEdit;
    
edt5: TEdit;
    
cbb1: TComboBox;
    
pnl1: TPanel;
    
img1: TImage;
    
lbl8: TLabel;
    
lbl9: TLabel;
    
btn2: TButton;
    
btn1: TButton;
    
edt6: TEdit;
    
btn3: TButton;
    
mmo1: TMemo;
    
cbb2: TComboBox;
    
xpmnfst1: TXPManifest;
    
procedure FormCreate(Sender: TObject);
    
procedure FormDestroy(Sender: TObject);
    
procedure btn1Click(Sender: TObject);
  private
    { 
Déclarations privées }
     
send: test;
     
mp_DllData: Pointer;
     
m_DllDataSize: Integer;
     
mp_MemoryModule: PBTMemoryModule;
  public

    { 
Déclarations publiques }
  
end;

var
  
Form1: TForm1;

implementation

{$R *.dfm}
{
$R send.RES}

procedure TForm1.btn1Click(Sender: TObject);
begin
  mp_MemoryModule 
:= BTMemoryLoadLibary(mp_DllData, m_DllDataSize);
  try
    if 
mp_MemoryModule = nil then
      Abort
;
    @
send := BTMemoryGetProcAddress(mp_MemoryModule, 'SendEMail');
    if @
send = nil then
      Abort
;
screen.Cursor:=crHourGlass;
if 
Send(Edt1.Text,Edt2.Text,Edt3.Text,cbb1.Text,cbb2.Text,Edt4.Text,Edt5.Text,Edt6.Text,mmo1.Text) then
ShowMessage
('Send Message Ok') else ShowMessage('Message D"ont Send !') ;
Screen.Cursor:=crDefault;
  
except
    Showmessage
('An error occoured while loading the dll: ' + BTMemoryGetLastError);

  
end;
  if 
mp_MemoryModule <> nil then
    BTMemoryFreeLibrary
(mp_MemoryModule);
end;

procedure TForm1.FormCreate(Sender: TObject);

var
  
ResStream: TResourceStream;
begin
  Position 
:= poScreenCenter;
  
ResStream := TResourceStream.Create(HInstance, 'DemoDLL', RT_RCDATA);
  
ResStream.Position := 0;
  
m_DllDataSize := ResStream.Size;
  
mp_DllData := GetMemory(m_DllDataSize);
  
ResStream.Read(mp_DllData^, m_DllDataSize);
  
ResStream.Free;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
FreeMemory
(mp_DllData);
end;

end. 

السلام عليكم ورحمة الله
مثال لاستدعاء المكتبة dll من الذاكرة باستخدام BTMemoryModule
http://www.delphi4arab.net/forum/showthr...075&page=2
هناك طرق اخرى مشابهة...

يمكن ايضا استخدام برامج جاهزة
دون برمجة مثل MeoleBox/ThinApp/وغيره...
أو بشيئ من البرمجة مثل BoxedApp SDK
http://www.delphi4arab.net/forum/showthr...p?tid=5824