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

نسخة كاملة : التعامل مع dll مبرمجة بـ c#.net في ديلفي
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله وبركاته
رمضان كريم للجميع

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

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

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

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

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

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

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

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

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


وشكرا
- هناك عدة طرق , للأسف غابت عني لعدم إهتمامي بالـ 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
بالتوفيق,,
السلام عليكم
الاستخدام من خلال 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
بالتوفيق.
السلام عليكم ورحمة الله وبركاته

نم حل المشكل شكرا للاخ 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; 

سلام