تقييم الموضوع :
  • 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 ك ب / التحميلات : 92)
الرد }}}
#2
مشكور استاذ على كل ما تقدمه

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




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

   


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

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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  استخدام الأداة AxWindowsMediaPlayer1 abuzarei 0 277 29-09-23, 08:07 PM
آخر رد: abuzarei
Information كود طباعه اكثر من ملف وبنوع مختلف نسيم الشباطي 0 837 14-05-22, 09:58 PM
آخر رد: نسيم الشباطي
Video [درس فيديو] استخدام داتا جريد فيو متقدمة يمكنها فلترة البيانات وترتيبها ahmadpal 1 2,833 17-04-22, 08:35 AM
آخر رد: ahmedramzyaish
  [مشروع] استخدام شبيكة بيانات واحدة لاكثر من .... تعال وشوف كيف سعود 3 1,697 15-12-21, 11:20 PM
آخر رد: سعود
  [مثال] طريقة استخدام MPV Player وتضمينه داخل يرنامجك معاند الحظ 1 1,733 04-12-21, 04:37 AM
آخر رد: ابو روضة
Smile [VB.NET] {تم التعديل}مثال حول استخدام مكتبات جوجل درايف معاند الحظ 3 2,970 31-03-21, 12:31 AM
آخر رد: messry
  استخدام TextBox للعمليات الحسابية VB.NET @@أبورائد@@ 11 10,150 14-02-21, 03:56 PM
آخر رد: الحسين احمد
Star [VB.NET] استخدام ايقونات الجهاز واستخدام treeview & listview والبحث عن الملفات والمجلدات معاند الحظ 3 1,871 07-02-21, 03:10 AM
آخر رد: معاند الحظ
  مرة اخرى - شرح مبسط لطريقة استخدام الاداة youtube-dl للتحميل من اليوتيوب معاند الحظ 2 1,943 03-11-20, 12:05 AM
آخر رد: معاند الحظ
  [مشروع] كيفية تشغيل صوت او اكثر كخلفية لشرح سترفعه على اليوتيوب سعود 5 3,525 25-09-20, 12:24 PM
آخر رد: سعود

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


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