اقتراحات لاستخدام Delphi لجعل ملفات DLL متعددة الإرسال
حاول استخدام واجهات DLL القياسية. وهذا يعني أن نوع المعلمة المرتفع ونوع إرجاع الوظيفة لا يمكن أن يكون فريدًا لـ Delphi ، مثل السلسلة (Ansistring) ، وكذلك المصفوفات الديناميكية والأنواع المركبة (مثل السجلات) التي تحتوي هذه الأنواع من الأعضاء. إذا كنت تستخدم نوع السلسلة أو نوع الصفيف الديناميكي ولم يكن المتصل برنامج Delphi ، فستبلغ عن خطأ. قد يحدث خطأ أيضًا إذا كان المتصل هو Delphi لكن المتصل أو Callee ليسوا في الوحدة الأولى التي تحتوي على ملف المشروع ، وهو ليس حليمي.
إذا كان المتصل هو تطبيق Delphi ، فقد تتمكن من استخدام الكائنات التي لا تحتوي على أعضاء بيانات من النوع المحظور (السلسلة ، الصفيف الديناميكي) كمعلمات أو قيم الإرجاع ، ولكن يجب تجنبها أيضًا قدر الإمكان.
إذا كان كل من المتصل والطرف المسمى كلاهما برامج Delphi ويحتاجان إلى استخدام سلسلة أو مجموعة ديناميكية كمعلمات ، فيجب أن تكون وحدة التضمين الأولى في ملف المشروع بين الطرفين حاملاً. (قد يكون برنامج منشئ C ++ هو نفسه ، ولكن لم يتم اختباره.)
إذا لم يكن المتصل برنامج Delphi أو السلسلة أو الصفيف الديناميكي أو أنواع البيانات المركبة ومثيلات الفئة التي تحتوي على سلسلة أو صفائف ديناميكية لا يمكن استخدامها كمعلمات أو قيم الإرجاع.
لذلك ، من أجل تحسين نطاق الإرسال من DLL وتجنب الأخطاء المحتملة ، يجب استخدام نوع المعلمة القياسية لـ Win32 API. يتم تحويل المصفوفات الديناميكية إلى نوع المؤشر (@Array [0]) وإضافة طول الصفيف.
إذا كان كل من المتصل والطرف المسمى كلاهما برامج Delphi ولا يرغبان في إجراء التحويل أعلاه لراحة الكتابة ، فمن المستحسن استخدام شكل حزمة وقت التشغيل. يمكن أن تضمن حزم وقت التشغيل الإصدار الصحيح للبيانات المخصصة ديناميكيًا. بهذه الطريقة ، بسبب امتداده (.bpl) ، يوضح أن الملف يقتصر على Delphi/C ++ Builder (على عكس DLL).
ثانياً ، حاول تجنب استخدام وظائف/عمليات التحميل الزائد قدر الإمكان. والأساليب في دلفي ، مثل createByDefaultFile و CreateFault.
أخيرًا ، كمزود لـ DLLs ، يجب عليك توفير ملفات واجهة البرمجة المباشرة مثل .PAS أو .DCU في Delphi (ويفضل .pas ، كما يمكن أن تكون هناك تعليقات) ، .H و .lib في C و C ++. بدلاً من السماح للمستخدمين بإنشائها بأنفسهم. هذا مهم بشكل خاص إذا كان عليك أن يكون لديك وظيفة/عملية تحميل زائد. بالإضافة إلى ذلك ، يمكن توصيل ملف .pas المقدم مقدمًا (باستخدام خارجي لتحديد وظيفة الإخراج في DLL) أو لاحقًا (باستخدام LoadLibrary و GetProcaddress). يوضح أنه رسمي (أو hiqos) ، ومضمون.