تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] كيف أجعل البرنامج يقبل عمليات حسابية بأعداد عشرية
#1
بسم الله الرحمان الرحيم من فضلكم أنا مبتدئ لا أعرف شيء و أنا أصنع برنامج رياضيات و لكن عند إدخال الرقم بالفاصلة يظهر لي مايلي :
Conversion from string "العدد الذي أدخلته" to type Integer is not valid
و لا أعلم ماذا أفعل الكود الذي استخدمته هو :
كود :
Dim a,b,c as Integer
a= Textbox1.Text
b= Textbox2.Text
c= a/b
Textbox3.Text = c
الرجاء محتاج حل في أسرع وقت و شكرا سلفا.
الرد }}}
تم الشكر بواسطة: asemshahen5
#2
(13-11-20, 11:18 PM)Necro PC كتب : بسم الله الرحمان الرحيم من فضلكم أنا مبتدئ لا أعرف شيء و أنا أصنع برنامج رياضيات و لكن عند إدخال الرقم بالفاصلة يظهر لي مايلي :
Conversion from string "العدد الذي أدخلته" to type Integer is not valid
و لا أعلم ماذا أفعل الكود الذي استخدمته هو :
كود :
Dim a,b,c as Integer
a= Textbox1.Text
b= Textbox2.Text
c= a/b
Textbox3.Text = c
الرجاء محتاج حل في أسرع وقت و شكرا سلفا.

(11-11-20, 07:48 PM)Anas Mahmoud كتب : عرف المتغيرات من النوع Double وسيقبل العمليات

Dim x,y,z As Double
x=12.5
y=2.5
z=x*y
msgbox(z) '31.25
الرد }}}
تم الشكر بواسطة: asemshahen5
#3
سأجرب أخي الكريم و سأخبرك. هل يقبل Double جميع العمليات مثلا القسمة الضرب الجمع الطرح ؟

للأسف أخي الكريم لم يقبل هل من حل في أسرع وقت وشكرا لكم
الرد }}}
تم الشكر بواسطة: asemshahen5
#4
من فضلكم هل من حل في أسرع وقت
الرد }}}
تم الشكر بواسطة: asemshahen5
#5
حسنا اخي الحل باستخدام Double.Parse اعطني بعض الوقت اجهز لك مثال

باستخدام Double.Parse تحول المدخلات النصية الى مدخلات من نوع Double 

كود :
       Dim a, b, c As Double
       a = Double.Parse(TextBox1.Text)
       b = Double.Parse(TextBox2.Text)
       c = a / b
       TextBox3.Text = c.ToString()

ولكنها تقوم برمي Exception وتوقف البرنامج اذا تم ادخال رقم غير صالح ،

الافضل استخدام TryParse لتحكم اكبر وهي تعيد True اذا نجحت عمليه التحويل و False اذا فشلت العملية :

كود :
       Dim a, b, c As Double
       If Double.TryParse(TextBox1.Text, a) = False Then
           MsgBox("ادخل رقم صالح")
           Return
       End If

       If Double.TryParse(TextBox2.Text, b) = False Then
           MsgBox("ادخل رقم صالح")
           Return
       End If

       c = a / b
       TextBox3.Text = c.ToString()
المثال به الطريقتين في المرفقات
وهذا موضوع عن التعامل مع TryParse : 
http://vb4arb.com/vb/showthread.php?tid=36426
الان يجب ان تفهم ان النوع Double هو نوع اوسع من Integer يعني بامكانه ان يقوم بما يقوم به Integer واكثر ، بالاضافة الى انه يدعم الارقام العشرية 
وهناك Single وهو نوع يقبل الارقام العشرية ايضا ولكن بمدى ( او دقة عشرية ) اقل من Double 
وايضا Decimal وهو يقبل الارقام العشرية ايضا ولكن بمدى كبير جدا جدا يستخدم للتعاملات المالية


الملفات المرفقة
.zip   DoubleParse.zip (الحجم : 55.05 ك ب / التحميلات : 11)
الرد }}}
تم الشكر بواسطة: عبد العزيز البسكري , asemshahen5
#6
(13-11-20, 11:18 PM)Necro PC كتب : بسم الله الرحمان الرحيم من فضلكم أنا مبتدئ لا أعرف شيء و أنا أصنع برنامج رياضيات و لكن عند إدخال الرقم بالفاصلة يظهر لي مايلي :
Conversion from string "العدد الذي أدخلته" to type Integer is not valid
و لا أعلم ماذا أفعل الكود الذي استخدمته هو :
كود :
Dim a,b,c as Integer
a= Textbox1.Text
b= Textbox2.Text
c= a/b
Textbox3.Text = c
الرجاء محتاج حل في أسرع وقت و شكرا سلفا.

        Dim a, b, c As Double
        a = Val(TextBox1.Text)
        b = Val(TextBox2.Text)
        c = a / b
        TextBox3.Text = Format(Val©, "0.000")

(15-11-20, 01:42 AM)salahalmasry كتب :
(13-11-20, 11:18 PM)Necro PC كتب : بسم الله الرحمان الرحيم من فضلكم أنا مبتدئ لا أعرف شيء و أنا أصنع برنامج رياضيات و لكن عند إدخال الرقم بالفاصلة يظهر لي مايلي :
Conversion from string "العدد الذي أدخلته" to type Integer is not valid
و لا أعلم ماذا أفعل الكود الذي استخدمته هو :
كود :
Dim a,b,c as Integer
a= Textbox1.Text
b= Textbox2.Text
c= a/b
Textbox3.Text = c
الرجاء محتاج حل في أسرع وقت و شكرا سلفا.

        Dim a, b, c As Double
        a = Val(TextBox1.Text)
        b = Val(TextBox2.Text)
        c = a / b
        TextBox3.Text = Format(Val©, "0.000")
"0.000"  هتحدد لك عدد الارقام العشرية
الرد }}}
تم الشكر بواسطة: asemshahen5
#7
(15-11-20, 01:42 AM)salahalmasry كتب :         Dim a, b, c As Double
        a = Val(TextBox1.Text)
        b = Val(TextBox2.Text)
        c = a / b
        TextBox3.Text = Format(Val©, "0.000")

اعذرني اخي الكريم شكرا لمساعدتك جدا ولكن وجب التنبيه الى ان استخدام Val خطأ كبير في بيئة ال .Net لانه من الاصدارات القديمة من الفيجوال بيسيك ، وهي موجودة في الاصدارات الجديدة من باب التكامل مع البرامج التي تنتقل من vb6 مثلا الى ال .Net 

الطرق المدعومة من VB.Net للتحويل من String الى Double هي : Cdbl و Convert.ToDouble و Double.Parse و  Double.TryParse

Cdbl : تقوم بعمل Cast اذا كان النوع هو double فعلا ، او تقوم باستدعاء Convert.ToDouble اذا كان من نوع اخر 
Convert.ToDouble : تقوم باعادة 0 في حالة كان المدخل null والا تستدعي Double.Parse 
https://referencesource.microsoft.com/#m...7819f63d0f
Double.Parse : تقوم باستدعاء Double.TryParse لاختبار اذا كانت عملية التحويل صالحة ام لا ، وترمي استثناء InvalidCastException في حالة لم تكن صالحة
Double.TryParse : تأخذ مدخلان هما النص المطلوب تحويله و المتغير الذي تضع فيه نتيجة التحويل ، و تعيد قيمة من Boolean تمثل هل نجحت عملية التحويل ام لا


اذا كما رأينا الامر كله يؤول الى Double.TryParse في النهاية ، لذلك اذا كنت متأكد ان المدخل من نوع String وانه ليس null استخدم Double.TryParse وفي المقابل ستستفيد من معلومة اذا كانت عملية التحويل صالحة ام لا ومن ثم تظهر رسالة مثلا للمستخدم تخبره ان مدخله غير صالح ، وهذا مالا تمكنك منه val
الرد }}}
تم الشكر بواسطة: asemshahen5
#8
شكرا إخواني بارك الله فيكم تم حل المشكل
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  مشكلة عند نقل البرنامج من فيجوال 2013 الى فيجوال 2017 strongriseman 5 149 12-03-24, 10:37 AM
آخر رد: strongriseman
  محتاج تشفير فيديو وتشغلية عن طريق البرنامج فقط new_programer 1 112 22-02-24, 12:09 PM
آخر رد: AHMED213
  مطلوب كود الطباعة لهذا البرنامج melad2002 2 234 13-01-24, 06:42 PM
آخر رد: melad2002
  مشكلة تعليق البرنامج في حال عدم وجود ماسح ضوئي متصل بالكمبيوتر صالح عبدالله 1 210 09-01-24, 10:51 PM
آخر رد: صالح عبدالله
  حل مشكلة بعد تثبيت البرنامج في جهاز العميل Adel27213 3 467 02-12-23, 11:00 PM
آخر رد: justforit
  عمليات الاضافة والتعديل على قاعدة بيانات sql server 2012 kewely 4 2,020 08-11-23, 01:07 AM
آخر رد: الحزين اليماني
  كيف اجعل البرنامج في بداية الشهر ينفذ حدث معين بالاصح اريد البرنامج في تاريخ واحد من Adel27213 3 484 05-11-23, 01:45 AM
آخر رد: justforit
  [VB.NET] كيف اجعل البرنامج يحدد اخر يوم من كل شهر Adel27213 2 361 03-11-23, 06:50 AM
آخر رد: Adel27213
  [سؤال] عمل البرنامج على أى resoluation dr.programming 0 244 02-11-23, 12:08 AM
آخر رد: dr.programming
  تنصيب البرنامج على اجهزة العملاء um_noor20 2 326 30-10-23, 04:17 PM
آخر رد: Taha Okla

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


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