في الوقت الحاضر ، يوجد في جيب شخص عادي كمبيوتر شخصي قوي ، لا يمكنك أن تحلم به إلا منذ حوالي 10-20 سنة. وإذا كان لديك كم من كود Windows الذي تم تصحيحه وتصحيح التطبيقات والأدوات المساعدة المثالية المكتوبة بلغة دلفي ، فمن المؤكد أنك تريد استخدام هذه الثروة لتطوير المحمول. وكذلك الخبرة المكتسبة أثناء البرمجة تحت ويندوز. سيساعدك PAS2JS على الجمع بين عالمين: التطوير لنظام Windows وإنشاء تطبيقات الويب ووحدات Node.js.
تمت مناقشة بعض الصعوبات المكتشفة من التجربة الشخصية في هذه المقالة.
لماذا لا تتعلم فقط JavaScript وتكتب تطبيقات الويب عليه؟
لقد تعلمت جافا سكريبت بشكل جيد بما فيه الكفاية. لكن أولاً ، البرمجة للويب هي أكثر من مجرد معرفة اللغة. ثانياً ، القدرة على كتابة رمز واحد لأنظمة مختلفة لا تقدر بثمن. يمكنك تصحيح الوحدات النمطية للتطبيق في Delphi IDE باستخدام مصحح الأخطاء القوي ومحررها ، ثم ، بإضافة الارتباطات الضرورية ، احصل على تطبيق عمل جاهز للموقع. وعندما تقوم بإصلاح الخطأ أو إضافة وظائف جديدة إلى تطبيق Windows ، سيكون ذلك كافياً فقط لإعادة ترجمة وحدات JavaScript في PAS2JS .
تجدر الإشارة إلى أنه على الرغم من أن PAS2JS لا يدعم جميع ميزات لغة دلفي ، إلا أنها مدرجة في الموقع . أيضًا ، لا يمكن نقل بعض أجزاء شفرة PAS2JS التي تبدو بسيطة إلى JavaScript.
صعوبات الترجمة
لذلك ، تم تنزيل حزمة PAS2JS الطازجة من FTP ، ونحن نحاول إعادة ترجمة "Hello World" البسيطة ، ونتوقف على الفور في:
uses System.SysUtils;
خطأ: لا يمكن العثور على وحدة "System.SysUtils"
حزم PAS2JS الجاهزة ، والتي يمكن العثور عليها في مجلد الحزم ، مكررة جزئياً وحدات نظام دلفي. لكن ليس لديهم بادئة في الاسم. الحل بسيط: قم بإزالة البادئة "النظام". من اسم الوحدة. يتم تصنيف البرنامج في دلفي (إن لم يكن ، تحقق من وجود بادئة "النظام" في أسماء نطاقات الوحدة ، في قائمة دلفي للمشروع | خيارات | دلفي مترجم).
اكتب الصب في الثوابت
لا يدعم PAS2JS صب النوع في تعبيرات ثابتة:
const CODE_A = Word('a');
خطأ: تعبير ثابت متوقع
في حالة الأنواع التي تم تعدادها ، يمكنك محاولة تغيير ذلك ، وذلك على النحو التالي:
const CODE_A = Ord('a');
أيضا ، لا يفهم PAS2JS الوظائف المدمجة في لغات Lo و Hi. في تعريف الثوابت ، يمكن استبدالها على النحو التالي:
const LO_BYTE = $1234 and $FF;
أحرف ANSI وسلاسل
آمل أن تكون قد تحولت بالفعل إلى سلاسل يونيكود في مشاريع دلفي الخاصة بك؟ إذا تركت بعض الأسطر بتنسيق ANSI من أجل حفظ الذاكرة ، فلن يتم تحويلها إلى JavaScript: لا يعرف PAS2JS أنواع AnsiChar و AnsiString و Utf8String و RawByteString. فكّر في استبدالها بأنواع Unicode أو Byte و Array of Byte.
هنا مثال على استبدال AnsiChar بالبايت:
خطاب نجاة ó
كفضول: في البولندية هناك خطاب ó - O kreskowane ، Unicode # $ 00F3. لسبب ما ، لم يعجب PAS2JS ذلك ، وفي بعض الحالات لا يمكن أن يرى خطًا إذا تم تضمين هذه الرسالة فيه:
var s: string; begin s := #$00F3'abdef';
بيان الحالة
تكمن المفاجأة المفاجئة في بيان الحالة ، حيث رفضت PAS2JS قبول الرسائل الروسية كخيارات:
ch := ''; case ch of '': Writeln(' ""');
ساعد تعريف الثوابت للحروف الروسية اللازمة:
const ckbA = #$410;
الاستنتاجات
تمكنت من تجميع مشروع دلفي صغير للويب ، وإجراء تغييرات صغيرة نسبيا على الكود المصدري للبرنامج ، وللوقت الذي حفظته كتبت هذا المقال. أظهر الاختبار أن كلا الإصدارين من البرنامج: لنظام التشغيل Windows وللويب ، يعملان بنفس الطريقة تمامًا. هذا بلا شك نجاح: يمكنني الآن تطوير هذا المشروع من خلال وضع اللمسات الأخيرة على برنامج في دلفي ، وترجمته إلى JavaScript باستخدام PAS2JS.
أما بالنسبة للعيوب البسيطة التي تم تحديدها ، فأنا متأكد من أنه سيتم التخلص منها بسرعة. نظرًا لأن مشروع PAS2JS مفتوح ومجاني ، تم تطويره بنشاط من قبل مجتمع Free Pascal .