الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تعلم كيف تقوم بترجمة الكود إلى ملف تنفيذى برمجيا

بدأه GHOST2010 في 30 أغسطس 2009 · 9 رد · 2,603 مشاهدة · في قسم الدروس والمواضيع المتميزة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكــم ورحمـة الله وبركاتــه ،،

هل احتجت يوما إلى ترجمة الكود إلى برنامج تنفيذى وذلك باستخدام الكود؟؟

هل تعتقد أن هذه العملية صعبة؟؟

الحل بسيط وسهل جدا بإذن الله

توفر لك بيئة الدوت نت فئة رائعة جدا للتعامل مع الكومبايلر وهى Microsoft.VisualBasic.VBCodeProvider حيث يمكنك استخدام هذه الفئة لترجمة الكود إلى ملف تنفيذى بمنتهى السهولة وبالمثال يتضح المقال

لنفرض أن لدينا وحدة نمطية Module تحتوى على هذا الكود

      Public Module EntryPointModule
      Public Sub Main()
      Microsoft.VisualBasic.MsgBox("Test compiling a VB code")
      End Sub
      End Module

كما تلاحظون أن البرنامج يحتوى على إجراء وحيد وهو Main والذى هو نقطة الإدخال الخاصة بالبرنامج وكل ما يقوم به هذا الإجراء هو إظهار رسالة فقط للمستخدم

نريد الآن عن طريق الكود تحويل هذا الكود إلى ملف تنفيذى والذى من المفترض عند تنفيذه أن يظهر لنا الرسالة "Test compiling a VB code"

الكود الذى سيقوم بهذه العملية سيكون بهذا الشكل

      Dim pr As New VBCodeProvider
      Dim cp As New CompilerParameters
      cp.GenerateExecutable = True
      cp.GenerateInMemory = False
      cp.IncludeDebugInformation = False
      cp.CompilerOptions = "/target:winexe"
      cp.TreatWarningsAsErrors = False
      cp.OutputAssembly = "C\:main.exe"
      Dim cr As CompilerResults = pr.CompileAssemblyFromFile(cp, "C\:main.vb")
      If cr.Errors.Count > 0 Then
      For Each er As CompilerError In cr.Errors
      MsgBox(er.ErrorText)
      Next
      End If

قمنا أولا بإنشاء نسخة جديدة من الفئة VBCodeProvider وهى المسئولة عن ترجمة الكود ونسخة من الفئة CompilerParameters والتى تستخدم لتحديد طريقة ترجمة الكود حيث تحدد نوع الملف الناتج هل هو ملف تنفيذى أو مكتبة ربط كما تحدد الأيكونة الخاصة بالبرنامج الناتج وغير ذلك من الوظائف

ثم نبدأ بعد ذلك بتحديد طريقة الترجمة عن طريق بعض الخصائص يمكنك مراجعتها على MSDN لكن ما يهمنا هو الخاصية GenerateExecutable والتى قمنا بإسناد القيمة True لها لأننا نريد أن ننشئ ملف تنفيذى وليس مكتبة ربط والخاصية CompilerOptions وهى التى تحدد خيارات المعالج عند ترجمة الكود وفى هذا المثال استخدمنا فقط خيار نوع المشروع وأخبرنا المعالج أن يترجم المشروع على أنه برنامج تنفيذى ثم أخبرناه أن الملف الناتج يجب حفظه فى المسار C:\main.exe وأخيرا نقوم بعملية الترجمة الفعلية عن طريق استدعاء الوظيفة CompileAssemblyFromFile والتى تستقبل معاملين اثنين الأول هو الفئة التى تحتوى على معاملات المعالج والثانى الملف المراد ترجمته وبعد تنفيذ هذه الوظيفة فإن نتيجة عملية الترجمة قمنا بتخزينها داخل كائن من النوع CompilerResults حتى نتمكن من معرفة هل تمت العملية بنجاح أم لا وذلك عن طريق التحقق من عدد الأخطاء فإن كانت صفرا فإن العملية قد تمت بنجاح وإلا فإن العملية قد فشلت.

أتمنى أن يكون الدرس مفيداً وأى استفسار فأنا فى انتظاركم ,,

تم تعديل هذه المشاركة بواسطة GHOST2010 في 6 مايو 2010 في 10:30

1

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#2

السلام عليكــم ورحمـة الله وبركاتــه ،،

شكراً لك اخي الكريم

لكنه يقف عند

Dim cr As CompilerResults = pr.CompileAssemblyFromFile(cp, "C:\main.vb")

ويظهر رساله انه غير قادر ع ايجاد الملف

هل تقصد بال c:\main هنا هوبرنامجي الذي اريده تنفيذي

انا حاولت عمله هكذا

Dim cr As CodeDom.Compiler.CompilerResults = pr.CompileAssemblyFromFile(cp, "C:\Documents and Settings\IRIS\سطح المكتب \cd\form1.vb")

لم افهم هل عمل تنفيد لكود معين ام حتى لفورم

استحملنا ياعم شويه

ولك جزيل الشكر

تم تعديل هذه المشاركة بواسطة incomplete في 2 سبتمبر 2009 في 07:09

#3

السلام عليكــم ورحمـة الله وبركاتــه ،،

الملف C:\main.vb هو الملف الذى يحتوى على الكود

Public Module EntryPointModule


Public Sub Main()

Microsoft.VisualBasic.MsgBox("Test compiling a VB code")

End Sub


End Module

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#4

شكراً لك اخي الكريم

الكود لا يتطبق معي انوجد اكثر منفورم

تظهر رساله

missing form2

تحياتي

#5

شكرا لك GHOST2010 على الدرس المفيد, لم اكن اعلم بوجد هكذا شيئ في بيئة دوت نت, و لكن برأيك ما فائدة ترجمة الكود في ال Run Time في الحياة العملية و هل استخدمته في برامجك من قبل؟!

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#6
Wael Dalloul كتب:
شكرا لك GHOST2010 على الدرس المفيد, لم اكن اعلم بوجد هكذا شيئ في بيئة دوت نت, و لكن برأيك ما فائدة ترجمة الكود في ال Run Time في الحياة العملية و هل استخدمته في برامجك من قبل؟!

شكرا على مرورك ياوائل

الطريقة دى ممكن تستخدمها فى حاجات كتير

انا مثلا باعمل بيها برنامج Installer وطبعا باستخدمها علشان اخرج ملف تنفيذى فى النهاية :wink:

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#7
اقتباس
انا مثلا باعمل بيها برنامج Installer وطبعا باستخدمها علشان اخرج ملف تنفيذى فى النهاية wink.gif

نريد درسا في الموضوع أخي GHOST2010 :)

اقتباس
ما جنيت على نفسي و لكن لساني جنى علي... :D

تحياتي...

#8
اقتباس
نريد درسا في الموضوع أخي GHOST2010
اقتباس
ما جنيت على نفسي و لكن لساني جنى علي...

:hmm: :hmm: :hmm: :hmm:

بتدبسنى يعنى ,, ماشى انتظر كااااااااام شهر لما أخلص البرنامج :D :D

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#9

كيف أقوم بعمل واجهة رسومية وأترجمها إلى ملف تنفيذي برمجياً

مثل البرامج التي ننشأها عند استخدامنا Windows Application

#10

شكرااااااااااااا الله يعطيك العافيه

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…