تالار گفتمان مانشت
یه خطای ناامید کننده در #C - نسخه‌ی قابل چاپ

یه خطای ناامید کننده در #C - Azadeh69 - 12 اردیبهشت ۱۳۹۱ ۰۸:۴۵ ق.ظ

سلام
در برنامه نویسی در #C به یه خطا برخوردم که حسابی برای ادامه کار ناامیدم کرده ، مشکل چیه ؟ چطوری باید رفعشش کرد

برنامه زیر به درستی جواب میده و مشکلی نداره
[تصویر:  85219_1_1379093161.jpg]


اما در برنامه زیر من فقط یه تغییر ایجاد کردم ، خصوصیت pictureBox را جز یکی از خصوصیت کلاسم قرار دادم ، که با این خطای ناامید کننده روبه رو می شم ! کمک
[تصویر:  85219_2_1379093161.jpg]


یه خطای ناامید کننده در #C - Azadeh69 - 12 اردیبهشت ۱۳۹۱ ۰۴:۵۷ ب.ظ

(۱۲ اردیبهشت ۱۳۹۱ ۱۰:۰۰ ق.ظ)robot2050 نوشته شده توسط:  متغیر picture box رو واسش تعریف نکردی . اگه توجه کنی p رو واسش تعریف کرده.

picturebox1 یک شی تصویره که در فرم ایجادش کردم ،
p در کلاس مهره ایجاد شد و مشکلی نداره !

کمک !

یه خطای ناامید کننده در #C - یاقوت سرخ - ۱۲ اردیبهشت ۱۳۹۱ ۰۵:۲۰ ب.ظ

mohre اسم کلاسه؟؟؟؟!!!!
پس چرا اینطوری ازش شی ایجاد کردی؟

RE: یه خطای ناامید کننده در #C - pos - 12 اردیبهشت ۱۳۹۱ ۰۵:۲۹ ب.ظ

من سی شارپ کار نکردم ولی با توجه به منطق جاوا این جا هم باید مشکلتان همینی باشه که میگم:

شما یک کلاس دارین به نام mohreh که آمدین یک آرایه ده تایی ازش تعریف کردین. تا اینجا مشکلی نداره:
کد:
Mohreh[] M=new Mohreh[10];

شما یک آرایه از نوع مهره ایجاد کردین. در حقیقت یک آرایه اشاره گر ده تایی ایجاد کردین که مقادیر همه اشاره گرها null هست. اول باید این اشاره گرها را به یک نمونه از اون شیء وصلشان کنی بعد مقدار دهی کنی یعنی :
کد:
M[1]=new Mohreh();
M[1].p=Picturebox1;

امیدوارم حل بشه Smile

RE: یه خطای ناامید کننده در #C - لهمشد - ۱۲ اردیبهشت ۱۳۹۱ ۰۵:۵۳ ب.ظ

بگید چی کار می خواهید انجام بدید .اینجا که داره خطا میده شما فقط نام شی picturebox رو پاس میدید . کارتون بگید چیه من تکه کدش رو براتون می نویسم .

یه خطای ناامید کننده در #C - Azadeh69 - 12 اردیبهشت ۱۳۹۱ ۰۶:۳۳ ب.ظ

(۱۲ اردیبهشت ۱۳۹۱ ۰۵:۲۰ ب.ظ)یاقوت سرخ نوشته شده توسط:  mohre اسم کلاسه؟؟؟؟!!!!
پس چرا اینطوری ازش شی ایجاد کردی؟

به یکی از خصوصیت کلاسم شی picturebox دادم .


(۱۲ اردیبهشت ۱۳۹۱ ۰۵:۲۹ ب.ظ)pos نوشته شده توسط:  شما یک آرایه از نوع مهره ایجاد کردین. در حقیقت یک آرایه اشاره گر ده تایی ایجاد کردین که مقادیر همه اشاره گرها null هست. اول باید این اشاره گرها را به یک نمونه از اون شیء وصلشان کنی بعد مقدار دهی کنی یعنی :
کد:
M[1]=new Mohreh();
M[1].p=Picturebox1;
امیدوارم حل بشه Smile

خوب منم دقیقا در کدی که ابتدا قرار دادم همین کار رو کردم که با اون خطا مواجه می شم !
(۱۲ اردیبهشت ۱۳۹۱ ۰۵:۵۳ ب.ظ)لهمشد نوشته شده توسط:  بگید چی کار می خواهید انجام بدید .اینجا که داره خطا میده شما فقط نام شی picturebox رو پاس میدید . کارتون بگید چیه من تکه کدش رو براتون می نویسم .

من می خوام بازی چکرز رو در شی گرایی کدنویسی کنم ، من در فرمم ۲۴ مهره دارم که این ۲۴ مهره رو در فرم ۲۴ picturebox قرار دادم اما در کلاس مهره برای اینکه بتونم ۲۴ picturebox رو به تک تک مهره ها ربط بدم (چون هر مهره برای خودش مکان داره و تصویر ) ، از کدی که قبلا گذاشتم استفاده کردم ، اما با خطایی که عرض کردم رو به رو می شم ،باز اگه جایی گنگ بود بگید بیشتر توضیح بدم


یه خطای ناامید کننده در #C - esi - 12 اردیبهشت ۱۳۹۱ ۰۷:۰۸ ب.ظ

injavab mide :

private void Form1_Load(object sender, EventArgs e)
{

}
public class myclass
{
public System.Windows.Forms.PictureBox p = new PictureBox();

}
public myclass[] c= new myclass[10];
private void button1_Click(object sender, EventArgs e)
{
c[1] = new myclass();
c[1].p=pictureBox1;
c[1].p.Left = 20;
}


یه خطای ناامید کننده در #C - antman - 12 اردیبهشت ۱۳۹۱ ۰۷:۴۱ ب.ظ

سلام


این جز خطاهای زمان اجرا است

واسه خطاهای زمان اجرا از بلوکهای {}try{} , catch استفاده میکنن
به این ترتیب که کدی که خطا رو ایجاد میکنه در try نوشته میشه و در catch هم راحلهای برای مدیریت اون خطا نوشته خواهد شد.
امتحان کنید
امیدوارم جواب بده

ضمنا:
واسه آشنایی بیشتر با این خطا ها میتونید به کتاب "آموزش سی شارپ - تالیف: سید محمد هاشمیان" مراجعه کنید.
این کتاب یکی از بهترین کتابای فارسی در زمینه آموزش سی شارپ هست.

یه خطای ناامید کننده در #C - Azadeh69 - 12 اردیبهشت ۱۳۹۱ ۰۷:۴۴ ب.ظ

(۱۲ اردیبهشت ۱۳۹۱ ۰۷:۰۸ ب.ظ)esi نوشته شده توسط:  
injavab mide :

private void Form1_Load(object sender, EventArgs e)
{

}
public class myclass
{
public System.Windows.Forms.PictureBox p = new PictureBox();

}
public myclass[] c= new myclass[10];
private void button1_Click(object sender, EventArgs e)
{
c[1] = new myclass();
c[1].p=pictureBox1;
c[1].p.Left = 20;
}

(۱۲ اردیبهشت ۱۳۹۱ ۰۷:۲۶ ب.ظ)inteligentium نوشته شده توسط:  خب دقیقا اینی که میگم رو انجام بدید،بعد از تعریف آرایه ای از Mohreh ها داخل یه حلقه for همه رو new کنید،مشکل شما اینه که کلاستون چون استاندارد نیست و خودتون تعریفش کردین باید دونه دونه اعضاش رو new کنید.
فایل عکسش رو پیوست کردم

مرسی دوستان ، جوابتون کاملا درسته ، فقط یه سوال
public Mohreh[] c= new Mohreh[10]; ، مگه این کد وظیفه تعریف ۱۰ نمونه از مهره نداره ، پس چرا باز باید تعریف بشه !