CHET هو مترجم .h-to-.pas مدعوم من Libclang لـ Delphi.
على عكس بعض المترجمين الآخرين ، يستخدم Chet برنامج التحويل البرمجي Clang لتحليل ملفات الرأس ، مما يؤدي إلى ترجمات أكثر دقة تتطلب تعديلات يدوية أقل.
بعض الميزات البارزة هي:
#define إلى الثوابت حيثما أمكن ذلك..pas واحد لدليل كامل من ملفات .h . هذا يقلل من المشكلات بسبب التبعيات بين ملفات الرأس..chet لإعادة الاستخدام. #ifdef ). هذا جيد وسيء. إنه جيد لأنه يحسن دقة التحويل. ولكن يمكن أن يكون سيئًا لأنه يستخدم النظام الذي يعمل عليه Chet لتحديد بعض المسارات الشرطية. على سبيل المثال ، نظرًا لأن CHET يعمل على Windows ، فسيتم تحليل الكود في الأقسام #ifdef _WIN32 ولكن تخطي أي رمز في أقسام للمنصات الأخرى. نظرًا لأن Chet يستخدم برنامج التحويل البرمجي الفعلي ، فستحتاج إلى تثبيت بيئة C (الحد الأدنى) ، بالإضافة إلى LLVM مع Clang. يجب أن تكون Clang قادرة على العثور على رؤوس النظام لبيئة التطوير. ستكون هذه عادةً متوفرة إذا كان لديك نسخة من Visual Studio مع تثبيت Visual C ++. إن الطبعة المجانية (المجتمع) من Visual Studio تكفي.
يمكنك تشغيل Chet أولاً للتحقق من أي أخطاء تتعلق بالتبعيات المفقودة. إذا حصلت على أي أخطاء تبعية عند تشغيل المترجم ، فيمكنك تنزيل التبعيات هنا:
يمكنك استخدام تطبيق Windows Chet 64 بت مسبقًا في دليل Bin .
إذا كنت ترغب في تجميع Chet بنفسك ، فأنت بحاجة أيضًا إلى libclang لـ Delphi والتأكد من أن Delphi IDE يمكن أن تجدها (سيجدها مشروع Chet تلقائيًا إذا كان دليل Neslib.Clang في نفس مستوى دليل Chet ).
شكرا لك على هذه المساهمات:
تشيت واضحة جدا. في كثير من الحالات ، تحتاج فقط إلى توفير دليل مع ملفات رأس ، اسم ملف .pas الإخراج وحدد "Run Header Translator (F9)".
لمزيد من التحكم في عملية التحويل ، يمكنك تحديد الخيارات المختلفة ، الموضحة أدناه.

يمكن حفظ أي خيارات تكوين تقوم بتعيينها في ملف تكوين .chet (وهو ملف INI بسيط). يتيح لك ذلك تحميل الإعدادات لاحقًا لإعادة تشغيل التحويل (على سبيل المثال ، عند إصدار إصدارات جديدة من ملفات الرأس). يمكنك تحميل وحفظ خيارات التكوين هذه باستخدام قائمة File .
للمساعدة في تكوين بعض الإعدادات لجلسة جديدة ، حدد File | New Project... (Ctrl+N) . يمكنك إدخال اسم المشروع وستقوم CHET بتكوين بعض الإعدادات بناءً على الاسم الذي تدخله (على الرغم من أنه يمكنك دائمًا تعديل هذه الإعدادات لاحقًا).
قائمة Run مثلما هو الحال مع Run Header Translator ، والتي يمكنك أيضًا تنشيطها باستخدام F9 .
تحتوي صفحة المشروع على أهم خيارات التكوين:
.h المصدر هنا. قد يكون الدليل بالنسبة للدليل الذي يحتوي على ملف مشروع .chet . انقر فوق الزر ... للتصفح للحصول على دليل. يوصى بعدم استخدام الدليل مع رمز مصدر C الأصلي. بدلاً من ذلك ، انسخ ملفات الرأس إلى دليل منفصل فقط لأغراض التحويل. هذا يجعل من الأسهل حذف ملفات الرأس التي لا تريد تحويلها ، أو إجراء تعديلات على ملفات الرأس لأغراض التحويل..pas الذي سيتم إنشاؤه. سيتم إنشاء ملف Pascal واحد مشترك لجميع ملفات الرأس المحسورة. قد يكون الاسم بالنسبة للدليل الذي يحتوي على ملف مشروع .chet . انقر فوق الزر ... لفتح مربع حوار حفظ.Windows.Winapi ) ، فيمكنك سرد هذه الوحدات هنا. ستضاف إلى شرط استخدام ملف Pascal الذي تم إنشاؤه.في هذه الصفحة ، تحدد الأنظمة الأساسية التي تريد استهدافها ، وكيف تريد تكوينها.
LIB_MYLIB ، لذلك سيتم إنشاء الإعلان التالي: const LIB_MYLIB = 'mylib.dll' .التالي هي مربعات الاختيار لجميع الأنظمة الأساسية التي تريد استهدافها (Windows 32 بت ، ونظام التشغيل Windows 64 بت ، و MACOS 32 بت ، و 64 بت Linux ، و iOS و Android). لكل منصة تقوم بفحصها ، يجب عليك إدخال الخيارات التالية:
_ ).هنا يمكنك تخصيص عملية التحليل clang.
-D<define> ) وتتضمن مسارات البحث ( -I<path> ). هناك أزرار منفصلة لتسهيل إضافة هذه. ارجع إلى وثائق Clang للحصول على معلومات حول وسيطات سطر الأوامر المتاحة.هذا هو المكان الذي تقوم فيه بتخصيص الإخراج الذي تم إنشاؤه.
cdecl و stdcall . في جميع الحالات تقريبًا ، يجب عليك استخدام اتفاقية استدعاء cdecl الافتراضية. استخدم stdcall فقط لنظام التشغيل Windows 32 بت الذي تعرفه يتم تجميعه مع اتفاقية استدعاء STDCALL. هذه عادة ما تكون فقط نظام Windows DLL's. معظم الطرف الثالث يستخدم DLL CDECL.char غامض ، يمكن استخدامه كصاحب عدد صحيح 8 بت أو حرف في سلسلة نصية. يتم دائمًا تحويل الإصدارات signed char و unsigned char إلى Shortint و Byte على التوالي. ولكن عندما لا يتم تحديد موقّع ، لديك الخيارات التالية:char إلى منصة UTF8Char .char إلى Shortint موقّع 8 بت.char إلى Byte 8 بت غير موقعة.begin procedure ). هنا تحدد كيف تريد تحويل هذه المعرفات:public ) كمعرفات في دلفي ، لكنها تبدو غريبة ويعاملها Thightlight Tightlight بشكل مختلف. لذلك عادة ما تريد التعامل مع هذه الكلمات المحجوزة أيضًا.type MyEnum = Integer; ) وإنشاء ثوابت لكل خيار في التعداد. قد يكون هذا أكثر قابلية للتطبيق لبعض المكتبات.#define ، انظر الملاحظات أدناه). هنا تحدد كيفية التعامل مع هذه:TODO على رمز مصدر Delphi ، بالإضافة إلى إصدار تم تعليقه من الإعلان الأصلي. تذكر أنه يمكنك عرض قائمة بجميع TODO في Delphi IDE عن طريق تحديد View | Tool Windows | To-Do List .لاحظ أن تعليقات الوثائق على نمط Doxygen فقط يتم تحليلها بواسطة Clang. هذه هي التعليقات التي تتبع أي من هذه الاتفاقيات التنسيق:
/// Comment (with 3 slashes)/** Comment (with two stars) *//*! Comment (with exclamation point) *////< Comment (applies to preceding declaration)/**< Comment (applies to preceding declaration) *//*!< Comment (applies to preceding declaration) */ يحاول Chet تحويل إعلانات #define إلى الثوابت إن أمكن. هذا يعمل فقط إذا:
#define ABS(x) (x < 0) ? -x : x لا يمكن ترجمتها.#define FOO 3<<BAR إلى const FOO = 3 shl BAR .هنا يمكنك تحديد قائمة من الرموز التي يجب تجاهلها. لن تترجم هذه الرموز.
الاستخدام الأكثر شيوعًا هو تجاهل #define الذي يولد أخطاء التحويل ، أو الوظائف التي لا تحتاجها. يمكنك أيضًا اختيار تجاهل بعض الأنواع ، ولكن قد يؤدي ذلك إلى أخطاء التجميع لاحقًا لأن الأنواع المتوقعة مفقودة.
لاحظ أن الرموز حساسة للحالة.
تحتوي الصفحة النهائية على زر واحد فقط "Run Header Translator" (والذي يمكنك أيضًا تنشيطه باستخدام F9 ). يوضح تقدم عملية الترجمة ، وكذلك أي أخطاء حدثت أثناء تحليل ملفات الرأس.
يمكنك استخدام هذه الأخطاء لإصلاح ملفات الرأس ، أو إضافة ملفات الرأس المفقودة ، أو تكوين عملية التحليل هذه عن طريق إضافة وسيطات سطر الأوامر (على سبيل المثال ، عن طريق إضافة تضمين مسارات البحث).
تم ترخيص Chet بموجب ترخيص BSD المبسط. انظر الترخيص. txt للحصول على التفاصيل.