17-06-2017, 02:07 PM
السلام عليكم ورحمة الله،
من المسائل التي تطرح في البرمجة (أو قد يطلبها الزبون) أن يقوم برنامج بالتواصل مع برنامج (Legacy Application) آخر يوفّر غالبا واجهة اتصال API
من المعروف أن جافا من خلال JNI (أو Java Native Interface) يمكنها استدعاء كود طبيعي Native مكتوب بـ C/C++ وبنفس الطريقة يمكن استدعاء كود دلفي
قام أحدهم بكتابة تغليف (wrapper) على JNI بدلفي يمكنك من استخدام الآلة الافتراضية جافا من خلال نمط JavaRuntime
وبنفس الطريقة يمكن استدعاء مكتبة DLL مكتوبة بدلفي من خلال كود جافا:
ولأن المثال قديم بعض الشيء اضطررت إلى إجراء بعض التعديلات ليعمل بشكل سليم على JDK 1.7 (استخدمت TurboDelphi 2006 النسخة المعدلة لإنتاج ملف DLL)
لتشغيل المثال:
- قم بتجميع المثال native.dpr
- ثم قم بتشغيل build.bat
المثال المعدل مرفق، ويبدو أن المثال لا يزال يحتاج إلى بعض التحديثات للتوافق مع جميع الإصدارات.
بالتوفيق. وتقبل الله منا ومنكم الصيام والقيام وسائر الأعمال.
من المسائل التي تطرح في البرمجة (أو قد يطلبها الزبون) أن يقوم برنامج بالتواصل مع برنامج (Legacy Application) آخر يوفّر غالبا واجهة اتصال API
من المعروف أن جافا من خلال JNI (أو Java Native Interface) يمكنها استدعاء كود طبيعي Native مكتوب بـ C/C++ وبنفس الطريقة يمكن استدعاء كود دلفي
قام أحدهم بكتابة تغليف (wrapper) على JNI بدلفي يمكنك من استخدام الآلة الافتراضية جافا من خلال نمط JavaRuntime
وبنفس الطريقة يمكن استدعاء مكتبة DLL مكتوبة بدلفي من خلال كود جافا:
كود :
https://sourceforge.net/projects/djbridge/ولأن المثال قديم بعض الشيء اضطررت إلى إجراء بعض التعديلات ليعمل بشكل سليم على JDK 1.7 (استخدمت TurboDelphi 2006 النسخة المعدلة لإنتاج ملف DLL)
لتشغيل المثال:
- قم بتجميع المثال native.dpr
- ثم قم بتشغيل build.bat
المثال المعدل مرفق، ويبدو أن المثال لا يزال يحتاج إلى بعض التحديثات للتوافق مع جميع الإصدارات.
بالتوفيق. وتقبل الله منا ومنكم الصيام والقيام وسائر الأعمال.
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...


![[-]](https://delphi4arab.net/forum/D4A2020/collapse.png)