ما الأدوات الموجودة لتحويل تطبيق Delphi 7 إلى C# وإطار عمل .Net؟[مغلق]

StackOverflow https://stackoverflow.com/questions/59547

  •  09-06-2019
  •  | 
  •  

سؤال

أحتفظ بتطبيق قديم للكمبيوتر الشخصي فقط مكتوب بلغة دلفي 7.على الرغم من أن دلفي قد خدمتني جيدًا في الماضي، إلا أنني الآن أستخدمها فقط لهذا التطبيق وأجد مهاراتي مع تضاؤل ​​اللغة.بناء جملتها مختلف جدًا عن لغات "وظيفتي اليومية" الخاصة بـ Java/Ruby، لذلك يستغرق الأمر وقتًا أطول للدخول في عملية كتابة تعليمات برمجية جديدة، بالإضافة إلى أنها قديمة جدًا لدرجة أنني لم أستخدم الكثير منها. واجهه المستخدملذلك لا تتم إدارة الكود وهو ما يبدو قديمًا بالنسبة لي الآن!

ينتقل العديد من المستخدمين إلى نظام التشغيل Vista الذي قد يقوم بتشغيل التطبيق في وضع التوافق أو قد يواجه مشكلات في GPF اعتمادًا على كيفية تكوين أجهزة الكمبيوتر الخاصة بهم بواسطة قسم تكنولوجيا المعلومات لديهم، لذلك يتعين علي إجراء بعض أعمال الصيانة للتطبيق.أتساءل عما إذا كان ينبغي علي الانتقال إلى مكدس مألوف أكثر.

هل هناك أداة تلقائية يمكنها القيام بالعمل القانوني لتحويل قاعدة التعليمات البرمجية إلى C#، مما يتركني أركز على التحويل على أي مكونات غير قياسية؟أنا أستخدم مكون قاعدة بيانات مضمن يسمى قاعدة البيانات المطلقة وهو متوافق مع BDE ويستخدم SQL القياسي طوال الوقت، ومكون متصفح Delphi HTML الأصلي الذي يمكن استبداله بشيء من عالم Microsoft.

ما مدى جودة أدوات التحويل هذه؟

هل كانت مفيدة؟

المحلول

لست على علم بأي أدوات آلية لإجراء هذا التحويل.أنا شخصياً أقترح عليك الاستمرار في استخدام دلفي، وربما مجرد الترقية إلى إصدار جديد.لقد رأيت اثنين من رموز DOM التي تحاول التحويل من دلفي إلى C#، لكن هذا لا يعالج مشكلة المكتبة.

لدى CodeGear (المعروفة رسميًا باسم Borland) أداة لـ الانتقال من C# إلى دلفي هذا يعمل بشكل جيد.أفترض أن الأدوات التي تسير في الاتجاه الآخر ستعمل بنفس الطريقة (تتطلب الكثير من التحرير).إليك أداة سويدية تعمل على نفس مبدأ CodeDOM من دلفي إلى C# (وعدد من اللغات الأخرى).وهناك آخرون، لا أستطيع العثور عليهم الآن.

هناك خيار آخر يتمثل في الترقية إلى إصدار أكثر استياءً من Delphi لـ .NET ونقل التعليمات البرمجية الخاصة بك إلى .NET بهذه الطريقة.بمجرد تشغيله في دلفي لـ .NET (الأمر الذي سيكون سهلاً جدًا، باستثناء قاعدة البيانات المضمنة، ما لم يكن لديهم إصدار .NET) يمكنك استخدامه صافي العاكس و مفكك الملفات عكس IL إلى C#.ستظل تستخدم VCL، ولكن يمكنك استخدام C# بدلاً من Object pascal.

الحل المماثل الآخر هو نقله إلى الأكسجين بواسطة RemObjects.أعتقد أن لديهم مسار ترحيل Delphi Win32 إلى WinForms.ثم استخدام صافي العاكس و مفكك الملفات عكس IL إلى C#.

باختصار، لا توجد إجابات سهلة.ترحيل اللغة أسهل من ترحيل المكتبة.يعتمد الكثير منها على مكونات الطرف الثالث التي استخدمتها (بخلاف قاعدة البيانات المطلقة) وما إذا قمت بإجراء أي استدعاءات لـ Windows API مباشرة في التطبيق الخاص بك.

هناك خيار آخر مختلف تمامًا وهو البحث عن فريق خارجي للحفاظ على التطبيق.ربما يمكنهم القيام بذلك بتكلفة زهيدة.يمكنك العثور على شخص ما محليًا، لكن ذلك سيكلفك بلا شك أكثر (على الرغم من انخفاض الدولار وضعف سوق العمل الذي لا تعرفه أبدًا)...)

حظ سعيد!

نصائح أخرى

كان هناك تقرير علمي عن تحويل ناجح لمشروع دلفي مكون من 1.5 مليون سطر إلى C# بواسطة جون برانت.لقد كتب محلل دلفي ومولد C# والكثير من قواعد التحويل على AST.إن التوسيع التدريجي لمجموعة القواعد، وإجراء بناء يومي، والكثير من اختبارات الوحدات، وبعض إعادة كتابة أجزاء دلفي الصعبة، سمح له بفريق مكون من 4 أشخاص، من بينهم بعض المطورين الأصليين، ذوي المعرفة العميقة بـ Delphi وC#، لترحيل البرمجيات في 18 شهرا.نظرًا لكون جون برانت هو المطور الأصلي لمتصفح إعادة البناء ومجموعة أدوات إنشاء برنامج التحويل البرمجي SmaCC، فمن غير المرجح أن تتمكن من المضي قدمًا بهذه السرعة

ينتقل العديد من مستخدمي إلى Vista الذي قد يدير التطبيق في وضع التوافق أو قد يواجهون مشكلات GPF اعتمادًا على كيفية تكوين جهاز الكمبيوتر الخاص بهم من خلال قسم تكنولوجيا المعلومات ، لذلك يتعين عليّ القيام ببعض الصيانة على التطبيق.أتساءل عما إذا كان ينبغي علي القفز إلى كومة أكثر دراية.

ما لم تكن تفعل شيئًا غير قياسي، فمن المفترض أن تعمل تطبيقات D7 بشكل جيد في نظام التشغيل Vista.

أما بالنسبة للتحويل إلى C#، أعتقد أن معظم أدوات التحويل ستكون مضيعة للوقت.قد يكون الأسلوب الأفضل هو إعادة كتابة التطبيق من البداية.

لا توجد إجابة سهلة، ولكن ضع في اعتبارك أن نسخة Delphi.net من اللغة تستهدف وقت تشغيل .net، وأن اللغات المختلفة على .net يمكن أن تتفاعل بشكل وثيق.

يمكنك محاولة تجميعها في Delphi.Net، مع تحليل التجميعات المختلفة ثم تحويل التجميعات يدويًا واحدة تلو الأخرى.يمكن أن يساعد برنامج Reflector في إجراء هندسة عكسية للتعليمات البرمجية المجمعة في هيكل كود C# - أي ما يعادلها ولكن بدون تعليقات، وأسماء المتغيرات الداخلية وما إلى ذلك.

من ناحية أخرى، قد يكون موقع Delphi.net جيدًا بما يكفي (TM) لهذا المشروع.

لكن ما لم يكن لديك مجموعة اختبار جيدة (أعتقد أنه ربما لا، نظرًا للحالة الفنية في دلفي 7) فسوف تقوم بإدخال الأخطاء.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top