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

فائدة : حول Option Strict

مغلق
بدأه Mr.Z في 20 أبريل 2002 · 0 رد · 1,740 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1

بسم الله الرّحمن الرّحيم

إنّ استخدام العبارة Option Strict مفيد جدّاً في البرامج التي تصممها باستخدام VB .NET ،لأنّها تمنع أي تحويل بين أنماط المتغيرات بحيث يؤدي ذلك التحويل إلى فقدان بيانات ، كيف ذلك ؟ دعنا نرى :

للعبارة Option Strict السابقة حالتين :

1- Option Strict On :

كلنا يعرف أنّه لكل نمط من المتغيرات مثل : Long ، Integer ،Decimal حجم مختلف في الذاكرة ، وقد تقع أثناء تطويرك لأحد البرامج في خطأ يتعلّق بأنماط المتغيرات السابقة .

(ملاحظة : أصبح نمط المتغيرات Integer يأخذ 4 بايت عوضاً عن 2 في vb6 كما أصبح Long يأخذ 8 بايت عوضاً عن 4 وأضيف نوع جديد هو Short ويأخذ 2 بايت)

مثال :

Dim int As Integer

        Dim lng As Long



        lng = 1.2



        int = lng

       MessageBox.Show(int)

ستلاحظ بأنّ قيمة int ستصبح مساوية إلى واحد ، أي أنّ هناك ضياعاً في البيانات قد حدث مما قد يؤدي إلى مشاكل في برنامجك .

الآن باستخدام العبارة Option Strict On ووضعها في أوّل سطر من نافذة الكود ، سيقوم ال Compiler مباشرة بوضع خط تحت المتغير lng مشيراً إلاّ أنّه لايمكن التحويل بين متغير من النوع Long إلى متغير من النوع Integer لأنّ ذلك سيؤدّي إلى ضياع في البيانات .

ماذا تلاحظ أيضاً ، لقد وضع خط تحت المتغير int ضمن الطريقة Show للكائنMessageBox لماذا ؟؟

الدالة MessageBox تتطلّب نص وأنت تزودها بعدد والنص يختلف عن العدد بالتأكيد !

كحل للمشكلة الأخيرة استخدم الدالة CStr للتحويل إلى نص .

ملاحظة : اذا استبدلت الكائن MessageBox بالدالة Msgbox القديمة لن يظهر ذلك الخط تحت المتغير int !!

والسبب أنّ الدالة Msgbox أصبحت الآن تتطلّب متغيراً من النوع Object (يعادل Variant في vb6) وبالتالي فلا يوجد تحويل خاطىء للبيانات.

أمّا اذا أردت أن تعكس الآية في الكود السابق أي lng = int فهذا لن يؤدي إلى خطأ لأنّ هذا التحويل لايسبب فقدان في البيانات.

2- Option Strict Off :

وهي الحالة الإفتراضية ل VB .NET (وذلك على عكس VB .NET Beta 2) ، أتصور أنّ هذا الخيار معروف ..

مع تمنياتي بأخطاء أقل ، والسلام عليكم ..

هذا الموضوع مغلق.

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