تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[مثال] استخدام TryParse لمدخلات اكثر امانا
#1
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته

تقديم هام:

واحدة من اكبر المميزات والعيوب في نفس الوقت في لغة 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.


الملفات المرفقة
.zip   TryParse.zip (الحجم : 59.3 ك ب / التحميلات : 4)
الرد
#2
مشكور استاذ على كل ما تقدمه

لماذا لا يقبل الراقام العشرية  مثلا 3.265 او 15.25  فهو ذائما يظهر الرسالة
MsgBox("صيغة الرقم الاول غير صحيحة")




الباقي يعمل بشكل ممتاز
 لعل الكلمة التي تنفعني لم أكتبها بعد
عبد الله بن المبارك
الرد
تم الشكر بواسطة:
#3
تعمل عندي بشكل طبيعي ، ربما كانت الاعدادات عندك مختلفة 

   


تحقق من اعدادات النقطة العشرية

   
الرد
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [مشروع] كيفية تشغيل صوت او اكثر كخلفية لشرح سترفعه على اليوتيوب سعود 6 1,067 14-09-20, 03:21 PM
آخر رد: al9atl
  مرة اخرى - شرح مبسط لطريقة استخدام الاداة youtube-dl للتحميل من اليوتيوب معاند الحظ 0 102 05-09-20, 11:18 PM
آخر رد: معاند الحظ
Video [درس فيديو] استخدام داتا جريد فيو متقدمة يمكنها فلترة البيانات وترتيبها ahmadpal 0 259 06-06-20, 03:42 AM
آخر رد: ahmadpal
  البحث في اكثر من عمود في قاعدة البيانات في ال datagridview ggtt17121985 0 370 15-05-20, 02:20 AM
آخر رد: ggtt17121985
Video [درس فيديو] استخدام السيريال بورت من اجل التحكم بالاردوينو ahmadpal 0 169 13-05-20, 04:26 PM
آخر رد: ahmadpal
  ياشباب ازاي استخدام ملف xmlكقاعده بيانات ؟؟ modywassemmody 0 226 17-03-20, 02:25 PM
آخر رد: modywassemmody
Smile [VB.NET] {تم التعديل}مثال حول استخدام مكتبات جوجل درايف معاند الحظ 2 519 07-03-20, 01:47 PM
آخر رد: معاند الحظ
  برنامج استخدام السكاين أمجد وضاح 1 602 03-02-20, 03:36 PM
آخر رد: asemshahen5
  [VB.NET] برنامج كيفية حماية البرنامج من استخدامه اكثر من مرة shwehdi4pc 10 4,708 25-02-19, 06:08 AM
آخر رد: new_programer
Lightbulb [مشروع] درس استخدام الكلاس من تقارير ريبورت فيور a.wagdi 6 1,287 25-12-18, 02:58 AM
آخر رد: عبد العزيز البسكري

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم