PDA

View Full Version : سوال: چگونه از دست ارور ارگومنت خلاص بشم



ro-programing
جمعه 19 آبان 1391, 22:50 عصر
سلام
من وقتی برنامه ای مینویسم بعضی اوقات یه ارور میده مثل شکل زیر :
94696

و حالا وقتی این ارور رو داد و کد اشتباه رو زرد کرد هر کاری میکنم بیخیال نمیشه
من باید برنامه رو که اجرا کردم ( اون هم هنگ میکنه ) به زور ببندم تا این ارور از بین بره و بتونم ویرایشش کنم ...
میخواستم بدونم چطوری از دستش خلاص بشم؟ بدون اینکه برنامه ی اجرا شده هنگ کنه؟
یا اصلا داستانش چیه؟ چرا مثل بقیه ی ارور ها زیرش رو خط زرد رنگ نمیزاره؟

Y_Safaiee
جمعه 19 آبان 1391, 23:25 عصر
سلام دوست من

الان دقیقا میخوای با این تکه کد چیکار کنی؟


int n = Convert.ToInt32(listBox1.Text,10);

ro-programing
جمعه 19 آبان 1391, 23:31 عصر
میخوام دو تا لیست باکس داشته باشم و یک تکست باکس که وقتی روش عدد رو وارد کردم تکست باک اولی اعداد فرد قبلش رو نشون بده و تکست باکس دومی اعداد زوج قبلش رو

Y_Safaiee
جمعه 19 آبان 1391, 23:43 عصر
منظورتون این کاره:


private void button1_Click(object sender, EventArgs e)
{
int num = Convert.ToInt32(textBox1.Text);
listBox1.Items.Clear();
listBox2.Items.Clear();
for (int a = 1; a <= num; a++)
{
if (a % 2 == 0) listBox1.Items.Add(a);
else listBox2.Items.Add(a);
}
}


موفق باشی
بایت بایت

Y_Safaiee
شنبه 20 آبان 1391, 00:05 صبح
چرا این همه پیچ دادین مساله رو . اگه من منظورتون رو اشتباه متوجه نشده باشم شما یک عددی توی تکست باکس وارد میکنین و میخوایین عدد های فرد قبلش رو تو یه لیست باکس و اعداد زوج قبلش هم تو یه لیست باکس دیگه نمایش بده . اگر منظور این هست من یه مثال الان نوشتم ازش :


private void button2_Click(object sender, EventArgs e)
{
int i = Convert.ToInt32(txt.Text);
int c = 0;
for (int k = i; k >= 0; k--)
{
if (k % 2 == 0)
{
c = k;
ListBoxZoj.Items.Add(c.ToString());
c = k - 2;

}
else if (!(k % 2 == 0))
{
c = k;
Listboxfard.Items.Add(c.ToString());
c = k - 2;

}



}


}

دوست عزیز
1.کد من که بهینه تره
2.وقتی تو حلقه داره تست میشه نیازی به c دیگه نیست,اگه باقیماندش صفر شه یعنی زوجه دیگه نیاز نیست -2 تا شه.تو کد شما c کمم شه که باز تو شرط بعدی مقدار میگیره

سورس منو نگاه کن

موفق باشی
بایت بایت

MrsiLeNt
شنبه 20 آبان 1391, 00:10 صبح
اتفاقا برای همین تشکر کردم از پستتون :لبخند:
دستور شما بهینه تره .

ro-programing
شنبه 20 آبان 1391, 00:12 صبح
از همگی ممنون ولی
اصلا منظور من کد نویسی نبود من که کد رو بلدم
منتهی گفتم اون اروری که عکسش رو تو پست اول گذاشتم رو چجوری ببندم ؟ که بیخایل شه؟

MrsiLeNt
شنبه 20 آبان 1391, 00:17 صبح
من دلیل استفاده پارامتر frombase این متد رو نفهمیدم. اگه میشه راجع به اون 10 بیشتر توضیح بدین. اصلا اون 10 رو بردارین ببینین درست میشه؟

ro-programing
شنبه 20 آبان 1391, 00:25 صبح
اون ده میگه با طول متغیر 10 ...
راستی اصل موضوع اینه
من نوشتم listbox1 این اشتباه بود و باید زیرش رنگ قرمز میومد اما نیومد و این ارور رو داد که زرد رنگم شد درواقع باید مینوشتم textbox1

arefba
شنبه 20 آبان 1391, 01:24 صبح
همونطور که میدونی بعضی از خطا ها Run time هستند
تو این کد شما نوشتید مقدار تکست درون لیست باکس 1 به int کانورت میشه و از لحاض منطقی صحیح است و برنامه برای شما خطایی نمی گیره که طبیعیه
اما وقتی که برنامه رو اجرا می کنید وقتی که متن درون لیست باکس 1 یک رشته باشه یا هیچی نباشه این کانورت صورت نمی گیره و خطا میده
به همین دلیل به قول شما خط قرمز زیرش کشیده نشده

arefba
یک شنبه 21 آبان 1391, 06:52 صبح
وارد کردن طول متغیر الزامی نیست
و اینکه چیکار کنید هنگ نکنه ؟
شما باید از int.TryParse استفاده کنید
سرچ کنید نحوه استفادش توضیح داده شده

mansourm
یک شنبه 21 آبان 1391, 10:02 صبح
دوست عزیز شما کدتونو به صورت زیر وارد کنید .
این کد حتی اگر textbox خالی باشی و یا هرخطای دیگر اتفاق بیفتد پیغام مناسبی را نمایش می دهد و تحت هیچ شرایطی برنامه هنگ نمی کنه




private void button1_Click(object sender, EventArgs e)
{
try
{
int num = Convert.ToInt32(textBox1.Text);
listBox1.Items.Clear();
listBox2.Items.Clear();
for (int a = 1; a <= num; a++)
{
if (a % 2 == 0) listBox1.Items.Add(a);
else listBox2.Items.Add(a);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

البته ببخشید من از کد دوست عزیزمون Youuness (http://barnamenevis.org/member.php?78417-Youuness) استفاده کردم