استخدام مكتبة dll مبرمجة بدلفي 7 ودلفي XE
#1
السلام عليكم ورحمة الله وبركاته
عندي DLL
وهذا الاجراء
procedure SendData(Data: PChar; Count: Integer); stdcall;
مصدر منها
المتغير الاول حولته من string الى PChar لتجنب اي مشاكل
ترجمت المكتبة باستعمال دلفي7
ربطت المكتبة دينامكيا باستعمال دلفي7
الاجراء يعمل بشكل طبيعي

المشكل عند ربط المكتبة بدلفي XE
الاجراء لا يعمل
حاولت تحويل المتغير من PChar الى PAnsiChar لكن دون جدوى

اود توضيح وحل المشكل
علما ان المكتبة مترجمة بدلفي7 وربط سيكون بدلفي XE
والاجراء في المكتبة بهذا الشكل
procedure SendData(Data: PChar; Count: Integer); stdcall;
الرد
#2
السلام عليكم...

في دلفي 7 النوع PChar هو Pointer to Char. و لكن أعتقد أنه من دلفي 2010 فما فوق فإن PChar هو Pointer to WideChar.

لهذا، و لغرض استعماله مع Delphi XE اجعل نوع البارامتر Data من النوع PWideChar و أعد تصريف الـ DLL.

و السلام.
الرد
#3
لم تنجح PWideChar و PAnsiChar
هل من توضيح
الرد
#4
ضع الكود الذي تستخدمه من ال xe .
Open Your Source .. Open Your Mind
الرد
#5
السلام عليكم
لقد وجدت حلا
كما ذكرت سابقا الاجراء في المكتبة بهذا الشكل
procedure SendData(Data: PChar; Count: Integer); stdcall;
تم تعريفه في دلفي XE
بهذا الشكل
procedure SendData(Data: PَAnsiChar; Count: Integer); stdcall;
عند التمرير
استعملت
SendData(PَAnsiChar(AnsiString(Data)), Count); stdcall;
والحمد لله توصلت للحل
SMP3 كتب :ضع الكود الذي تستخدمه من ال xe .
لقد وضعت كل شيء Big Grin
ممكن توصيح ولو بسيط لما حدث
وهل توجد حلول اخرى
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 2 ) ضيف كريم