16-09-20, 08:49 AM
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
تقديم هام:
واحدة من اكبر المميزات والعيوب في نفس الوقت في لغة VB.NET انها سلسة للغاية في ما يتعلق بالتحويل بين انواع البيانات
مثلا يمكنك تعريف متغير من نوع Integer واسناد قيمة له من نوع String وستقبل اللغة هذا السلوك اثناء كتابة الكود ، واثناء التنفيذ تقوم بالتحويل المناسب لجعله Integer اذا امكن ،
الكود التالي مقبول تماما بالنسبة ل VB.NET
وهو شيء جميل ، ولكنه في غاية الخطورة لسببان رئيسيان :
السبب الاول : هو انه ايضا سيقبل الكود التالي اثناء كتابته ، ولكن عند التنفيذ سينفجر البرنامج في وجهك :
السبب الثاني : هو انك ستعتاد على مثل هذه السهولة ولن تحصن متغيراتك من مدخلات المستخدم ، بل الاصعب انك لن تكون واعي بعملية التحويل التي تقوم بها اللغة من string الى اي كان نوع متغيرك ، ستعتاد كتابة مثل هذه الاسطر وهذه كارثة :
الان نحن نعول على المستخدم ان يدخل صيغ صحيحة والا انهار البرنامج ، وهنا تأتي اهمية TryParse .
TryParse:
حسنا الان عرفنا انه يجب علينا تحويل النصوص قبل استخدامها في المتغيرات ، واحده من الطرق التي تقوم بذلك هي w[Type].Parseتدخل لها String وتخرج النوع الذي تريده ، ولكن استخدام Parse لن يحل المشكلة ايضا ، لانها ترمي باستثناء اذا كانت الصيغة غير مناسبة ، الحل مع TryParse
الدالة TryParse تقبل مدخلين :
الاول : القيمة النصية المطلوب تحويلها
الثاني : المتغير المطلوب اسناد القيمة بعد التحويل اليه
وتعود بقيمة منطقية Boolean تمثل هل نجحت عملية التحويل ام لا
السطر التالي سيعود بقيمة False لان عملية التحويل لم تنجح لان النص غير صالح
ممتاز ، من الان لنعتاد على ان نستخدم TryParse كلما اردنا ان نأخد مدخلات من المستخدم :
هذه المقالة مهمة جدا للاستاذ Sajad بارك الله له عن نفس الموضوع
المثال التالي به اكثر من تطبيق على TryParse.
السلام عليكم ورحمة الله وبركاته
تقديم هام:
واحدة من اكبر المميزات والعيوب في نفس الوقت في لغة VB.NET انها سلسة للغاية في ما يتعلق بالتحويل بين انواع البيانات
مثلا يمكنك تعريف متغير من نوع Integer واسناد قيمة له من نوع String وستقبل اللغة هذا السلوك اثناء كتابة الكود ، واثناء التنفيذ تقوم بالتحويل المناسب لجعله Integer اذا امكن ،
الكود التالي مقبول تماما بالنسبة ل VB.NET
كود :
Dim i As Integer = "3"
Dim iAsString As String = 3
Dim d As Date = "9/16/2020"
وهو شيء جميل ، ولكنه في غاية الخطورة لسببان رئيسيان :
السبب الاول : هو انه ايضا سيقبل الكود التالي اثناء كتابته ، ولكن عند التنفيذ سينفجر البرنامج في وجهك :
كود :
Dim i As Integer = "3 Times"
Dim d As Date = "9/16/2020 الاربعاء"
السبب الثاني : هو انك ستعتاد على مثل هذه السهولة ولن تحصن متغيراتك من مدخلات المستخدم ، بل الاصعب انك لن تكون واعي بعملية التحويل التي تقوم بها اللغة من string الى اي كان نوع متغيرك ، ستعتاد كتابة مثل هذه الاسطر وهذه كارثة :
كود :
Dim i As Integer = txtMessageTimes.Text
Dim d As Date = txtDate.Text
الان نحن نعول على المستخدم ان يدخل صيغ صحيحة والا انهار البرنامج ، وهنا تأتي اهمية TryParse .
TryParse:
حسنا الان عرفنا انه يجب علينا تحويل النصوص قبل استخدامها في المتغيرات ، واحده من الطرق التي تقوم بذلك هي w[Type].Parseتدخل لها String وتخرج النوع الذي تريده ، ولكن استخدام Parse لن يحل المشكلة ايضا ، لانها ترمي باستثناء اذا كانت الصيغة غير مناسبة ، الحل مع TryParse
الدالة TryParse تقبل مدخلين :
الاول : القيمة النصية المطلوب تحويلها
الثاني : المتغير المطلوب اسناد القيمة بعد التحويل اليه
وتعود بقيمة منطقية Boolean تمثل هل نجحت عملية التحويل ام لا
السطر التالي سيعود بقيمة False لان عملية التحويل لم تنجح لان النص غير صالح
كود :
Dim i As Integer
MsgBox(Integer.TryParse("3 Times", i)) 'False
ممتاز ، من الان لنعتاد على ان نستخدم TryParse كلما اردنا ان نأخد مدخلات من المستخدم :
كود :
Dim d As Date
If Date.TryParse(txtDate.Text, d) = False Then
MsgBox("صيغة التاريخ غير صحيحة")
Return
End If
DateTimePicker1.Value = d
هذه المقالة مهمة جدا للاستاذ Sajad بارك الله له عن نفس الموضوع
المثال التالي به اكثر من تطبيق على TryParse.