delphi4arab منتديات دلفي للعرب
التعامل مع dll مبرمجة بـ c#.net في ديلفي - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : التعامل مع dll مبرمجة بـ c#.net في ديلفي (/showthread.php?tid=2349)



التعامل مع dll مبرمجة بـ c#.net في ديلفي - maosalah - 25-08-2010

السلام عليكم ورحمة الله وبركاته
رمضان كريم للجميع

لدي ملف DLL مبني علي C#.NET احتاج لاتصال به عن طريق Delphi 7

وجدت طريقة عن طريق ComObject لكن ليس لدي كود ال DLL

هل توجد طريقة اخري

سلام


التعامل مع dll مبرمجة بـ c#.net في ديلفي - TF6M - 26-08-2010

و عليكم السلام و رحمة الله و بركاته
1- مرحبا بك اخي معنا , فقط راجع قوانين المشاركات .
2- مواضيع دات صلة :

كيف ابعث متغير لدالة في ملف dll ثم احصل على النتيجة
طريقة تحويل البرنامج الى مكتبات dll
معرفة function المصدرة من مكتبة DLL
بالتوفيق,,


التعامل مع dll مبرمجة بـ c#.net في ديلفي - maosalah - 27-08-2010

السلام عليكم

شكرا اخي tf6m علي الرد
إقتباس :1- مرحبا بك اخي معنا , فقط راجع قوانين المشاركات .

الله يسلمك اخي
اسف ان كنت اخطأت لقر راجعت قوانين المشاركات

إقتباس :2- مواضيع دات صلة :

هذه المواضيع متعلقة بالمكتبات dll win32 وليست مكتبات net.


وشكرا


التعامل مع dll مبرمجة بـ c#.net في ديلفي - TF6M - 27-08-2010

- هناك عدة طرق , للأسف غابت عني لعدم إهتمامي بالـ Net.
أبسط طريقة :
1- حمل Assembly Registration Tool (Regasm.exe)
2- تحصل على الـ Lib من الـ Dll بهذا الخيار :
PHP كود :
Regasm MyDll.dll /tlb:MyLib.tlb 
3- الأن من المفترض التحصل على ملف MyLib.tlb , قم بنسخه & MyDll.dll , مثلا و أرفقهما
بالبرنامج j(
YourApp)
4- إذا كنت تستخدم دلفي 7 , قم بإظافة الـ Lib من :
كود :
Project->Import Type Library -> Add ->
أو دلفي 2010 :
كود :
Toolz ->Option ->Library - Translated ->Translated Library Path-> Add ->
4- لا تنسى إظافة :
كود :
uses ComObj;
5- الأن يمكنك إستدعاء الـ Methods & Classes , كالـ DllWin32 .

- في ما يخص الـ Typesا :
PHP كود :
// Setting ComVisible to false makes the types in this assembly not visible 
// to COM components.  If you need to access a type in this assembly from 
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)] 

- أيضا معلومات جيدة ذات صلة : Importing a C#.NET dll into Delphi
بالتوفيق,,



التعامل مع dll مبرمجة بـ c#.net في ديلفي - kachwahed - 27-08-2010

السلام عليكم
الاستخدام من خلال COM راجع Using a .NET Assembly via COM by Jim McKeeth هنا:
كود :
http://edn.embarcadero.com/article/32754
CrossTalk من البرامج تجارية:
كود :
http://atozed.com/CrossTalk/index.en.aspx
قد يفيدك من MSDN هذا:
كود :
http://msdn.microsoft.com/en-us/library/zsfww439%28VS.71%29.aspx
بالتوفيق.



التعامل مع dll مبرمجة بـ c#.net في ديلفي - maosalah - 27-08-2010

السلام عليكم ورحمة الله وبركاته

نم حل المشكل شكرا للاخ TF6M

هذا مثال لتعم الفائدة ان شاء الله

كود ال C#

PHP كود :
// MyInterface.cs
public interface MyInterface
{
    
int Add(int i1, int i2);
} 
PHP كود :
// MyDLL.cs
using System.Runtime.InteropServices;

[
ClassInterface(ClassInterfaceType.None)]
public class 
MyDLL : MyInterface
{
    public 
int Add(int i1, int i2)
    {
        return 
i1+i2;
    }
} 

الان
إقتباس :1- حمل Assembly Registration Tool (Regasm.exe)
2- تحصل على الـ Lib من الـ Dll بهذا الخيار :
PHP كود :
Regasm MyDll.dll /tlb:MyLib.tlb 

إقتباس :3- الأن من المفترض التحصل على ملف MyLib.tlb , قم بنسخه & MyDll.dll , مثلا و أرفقهما
بالبرنامج j(YourApp)
4- إذا كنت تستخدم دلفي 7 , قم بإظافة الـ TLB من :

كود :
Project->Import Type Library -> Add ->

تم اضغط علي Create Unit

5- لا تنسى إظافة :
كود :
uses ComObj, MyDLL_TLB;

للاستدعاء
PHP كود :
procedure TForm1.Button1Click(Sender: TObject);
var
  
intfRef: MyInterface;
  
result: Integer;
begin
  intfRef 
:= CreateComObject(CLASS_MyDLL_) as MyInterface;
  
result := intfRef.Add(2, 2);
..
.
end; 

سلام