PDA

View Full Version : سوال: راه حل برای error:not all code paths return a value در visual studio 2008



behnaz-rose
شنبه 15 تیر 1392, 22:23 عصر
سلام دوستان
من یک تکه کد به زبان #c نوشتم که این ارور رو میده کسی میدونه دلیلشو

پروژه ام لنگ همین یه دونه اروره کسی میتونه کمکم کنه


Error 1 :ChooseFile()': not all code paths return a value



() public bool ChooseFile
}
bool ChooseFile = false//
#if def_ChooseFile
// CommonDialog1.CancelError = true;
try
{ // On Error GoTo ErrHandler
CommonDialog1.Filter = "DXF Files(*.dxf)|*.dxf|"+"TXT Files (*.txt)|*.txt|All Files (*.*)|*.*";
// Specify default filter
CommonDialog1.ShowDialog();
LabelFileName.Text = CommonDialog1.FileName;

ChooseFile = true;
return ChooseFile;
}
catch
{ // ErrHandler:
ChooseFile = false;
//return ChooseFile;
}
#endif // def_ChooseFile

Sal_64
شنبه 15 تیر 1392, 22:55 عصر
سلام
برای نمایش کدها در تاپیک از تک کد استفاده کنید
پیغام خطا اینو میگه که تابع باید مقداری برگردونه ، باید پس از بسته شدن catch تابع مقدار برگشتی داشته باشه

behnaz-rose
دوشنبه 17 تیر 1392, 00:25 صبح
سلام
برای نمایش کدها در تاپیک از تک کد استفاده کنید
پیغام خطا اینو میگه که تابع باید مقداری برگردونه ، باید پس از بسته شدن catch تابع مقدار برگشتی داشته باشه
شاید دلیلش اینه: وقتی داخل متد یک متغیر بولین به نام choosefile تعریف می کنم این ایراد رو میگیره
The variable 'ChooseFile' is assigned but its value is never used
یعنی در هر حالی مقدار متغیر خالی می مونه وبرنامه نمیتونه ازش استفاده کنه در نتیجه return choosefile هیچ مقداری رو برنمی گردونه
لازم به ذکره که ساختار try/catch رو از متد حذف کردم باز مشکل سرجاش بود

public bool ChooseFile()
{
bool ChooseFile = false;

{
openFileDialog1.Filter = "DXF Files(*.dxf)|*.dxf|"+"TXT Files (*.txt)|*.txt|All Files (*.*)|*.*";
openFileDialog1.ShowDialog();
FileName.Text = openFileDialog1.FileName;

ChooseFile= true;
return ChooseFile;
}


راه حلی درین مورد به نظرتون میرسه؟

pcseven
دوشنبه 17 تیر 1392, 00:56 صبح
لطف کن کدت رو تمیز و مرتب در تگ کد قرار بده تا بتونیم کمکت کنیم.

مهرداد صفا
دوشنبه 17 تیر 1392, 01:55 صبح
با سلام.
شما درون #if مقدار را return کردید در حالیکه که اگر شرط مربوط به #if بر قرار نباشد کامپایلر محتویات درون شرط را نا دیده میگیرد. در واقع از نظر کامپایلر (احتمالا چون شرط #if صحیح نیست) کد درون #if جزو برنامه نیست و در نتیجه تابع مقداری بر نمیگرداند.

behnaz-rose
سه شنبه 18 تیر 1392, 22:32 عصر
مشکل حل شد مربوط به ساختار if#بود .از توجه دوستان متشکرم