نمایش نتایج 1 تا 12 از 12

نام تاپیک: نحوه تشخیص نوع ورودی؟

  1. #1
    کاربر جدید آواتار senior.sina
    تاریخ عضویت
    شهریور 1390
    محل زندگی
    رشت...
    پست
    21

    Question نحوه تشخیص نوع ورودی؟

    سلام

    میخوام یه عدد رو از تکست باکس بگیرم بعد تشخیص بده که عدد اعشاری هست یا صحیح؟

  2. #2

    نقل قول: نحوه تشخیص نوع ورودی؟

    سلام ،

    1 ) یک لیبل و یک دکمه و یک تکست باکس روی فرم قرار بده

    2 ) کد زیر رو در رویداد Click دکمه بنویس :

    try
    {
    int i = 0;

    i = Convert.ToInt32(textBox1.Text);

    label1.Text = "عدد صحیح";


    }
    catch
    {
    label1.Text = "اعشاری";

    }


    3 ) برنامه رو دیباگ کن و نتیجه رو مشاهده کن.

    موفق باشید./

  3. #3

    نقل قول: نحوه تشخیص نوع ورودی؟

    نقل قول نوشته شده توسط vbBoss مشاهده تاپیک
    سلام ،

    1 ) یک لیبل و یک دکمه و یک تکست باکس روی فرم قرار بده

    2 ) کد زیر رو در رویداد Click دکمه بنویس :

    try
    {
    int i = 0;

    i = Convert.ToInt32(textBox1.Text);

    label1.Text = "عدد صحیح";


    }
    catch
    {
    label1.Text = "اعشاری";

    }


    3 ) برنامه رو دیباگ کن و نتیجه رو مشاهده کن.

    موفق باشید./

    و به ازای ورودی تکست باکس = "jkajkdfkjadfkb" ؟

  4. #4
    کاربر دائمی آواتار p.yazdkhasti
    تاریخ عضویت
    فروردین 1391
    محل زندگی
    http://devnet.ir
    پست
    121

    نقل قول: نحوه تشخیص نوع ورودی؟

    سلام
    روش ذکر شده در بالا به دلیل استفاده از try-catch به نظر من روش مناسبی نیست و بهتر است از امکانات کتابخانه دات نت به صورت زیر استفاده نمایید:

    public enum StringConversionResult:short
    {
    Nan = 0,
    Integer=1,
    Float=2
    }

    و سپس

    public StringConversionResult ProcessString(string s)
    {
    var i = 0;
    var d = 0d;
    if (int.TryParse(s,out i))
    {
    return StringConversionResult.Integer;
    }
    return double.TryParse(s,out d) ? StringConversionResult.Float : StringConversionResult.Nan;
    }

  5. #5

    نقل قول: نحوه تشخیص نوع ورودی؟

    و به ازای ورودی تکست باکس = "jkajkdfkjadfkb" ؟
    کد بالا در صورتی که کاربر فقط داخل تکست باکس عدد رو وارد کنه کاربرد داره ، نه اینکه هم بیاد حرف وارد کنهو هم Symbol . با if میتونه چک کنه.

    روش ذکر شده در بالا به دلیل استفاده از try-catch به نظر من روش مناسبی نیست
    اشکالات رو بگین ممنون میشم.

  6. #6
    کاربر دائمی آواتار p.yazdkhasti
    تاریخ عضویت
    فروردین 1391
    محل زندگی
    http://devnet.ir
    پست
    121

    نقل قول: نحوه تشخیص نوع ورودی؟

    سلام
    در کد نویسی در دات نت توصیه می شود تا حد ممکن از try-catch استفاده نشود و از آن تنها در مواردی استفاده کرد که می خواهید بعد بروز خطا عملیاتی مانند Rollback کردن یک Transaction و یا Log کردن خطا و یا نمایش پیغام خطا به کاربر را داشته باشید. دلیل این موضوع نحوه اجرای کد نوشته شده در این حالت توسط CLR است. try-catch نباید برای مواردی که میتوان کد را بدون استفاده از آن نوشت استفاده شود. لینک های زیر در این زمینه مفید هستند:
    http://weblogs.asp.net/memi/archive/...13/131244.aspx
    http://codebetter.com/karlseguin/201...use-try-catch/

  7. #7

    نقل قول: نحوه تشخیص نوع ورودی؟

    استفاده از Try-Catch اصلا قابل قبول نيست.

    if (((int)Convert.ToDouble(textBox1.Text)).ToString () != textBox1.Text) MessageBox.Show("Float");

  8. #8

    نقل قول: نحوه تشخیص نوع ورودی؟

    سلام نحوه ی صحیح تشخیص نوع ورودی اینه :
    if (txtbox.Text.GetType() == typeof(Int32))
    {
    ///int
    }
    else
    {
    ///float
    }

  9. #9
    کاربر تازه وارد
    تاریخ عضویت
    مرداد 1390
    محل زندگی
    شهر هفت هزار ساله شوش
    پست
    79

    نقل قول: نحوه تشخیص نوع ورودی؟

    تا زمانی که GetType() هست چرا از این روشای پر درد سر استفاده می کنید؟!
    ببخشید که اسپم شد

  10. #10
    کاربر دائمی آواتار p.yazdkhasti
    تاریخ عضویت
    فروردین 1391
    محل زندگی
    http://devnet.ir
    پست
    121

    نقل قول: نحوه تشخیص نوع ورودی؟

    نقل قول نوشته شده توسط amirrr3 مشاهده تاپیک
    تا زمانی که GetType() هست چرا از این روشای پر درد سر استفاده می کنید؟!
    ببخشید که اسپم شد
    نقل قول نوشته شده توسط blue_sky_0261 مشاهده تاپیک
    سلام نحوه ی صحیح تشخیص نوع ورودی اینه :
    if (txtbox.Text.GetType() == typeof(Int32))
    {
    ///int
    }
    else
    {
    ///float
    }
    سلام
    در پاسخ به دوستانی که از این روش استفاده کرده اند باید توضیح بدهم که متد GetType یک متد از کلاس System.Object است و در نتیجه کلیه انواع داده ای این متد را دارا می باشند. با فراخوانی این متد به صورت txtbox.Text.GetType() ، خروجی متد در شرایطی که مقدار txtbox.Text برابر با Null نباشد همیشه typeof (System.String) است و در هنگامی که Null باشد کد شما با خطا روبرو خواهد شد و Exception خواهد داد.

  11. #11

    نقل قول: نحوه تشخیص نوع ورودی؟

    نقل قول نوشته شده توسط ali_habibi1384 مشاهده تاپیک
    استفاده از Try-Catch اصلا قابل قبول نيست.

    if (((int)Convert.ToDouble(textBox1.Text)).ToString () != textBox1.Text) MessageBox.Show("Float");
    چرا استفاده از ترای کش اشکال داره؟نه اینجا کلا مگه مشکل درست میکنه؟

  12. #12

    نقل قول: نحوه تشخیص نوع ورودی؟

    نقل قول نوشته شده توسط xxxsenatorxxx مشاهده تاپیک
    چرا استفاده از ترای کش اشکال داره؟نه اینجا کلا مگه مشکل درست میکنه؟
    نه دوست عزیز، چیز بدی نیست منتها برای این کار مناسب نیست، کاربرد اون سینتکس برای مدیریت خطا هست نه برای پیاده سازی منطق.
    به عبارت دیگه روش پر هزینه ای هست و روش های بهینه تری وجود داره

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •