PDA

View Full Version : سوال: ایراد این فانگشن چیست؟؟؟



farhad85
دوشنبه 14 بهمن 1392, 11:56 صبح
116342
سلام دوستان این فانگشن به درستی کار میکنه ولی یه خط سبز می ندازه ریر عند فانگشنش چکار کنم که خط سبزرنگ از بین بره؟؟؟؟؟؟؟مشکلش چیه? از نظر کارکرد که کار میکنه. ولی میخوام اون خط هم از بین بره؟ ریتوران رو دقیقا باید کجای کد زیر قرار بدم ممنون


PublicFunction CheckCode(ByVal Code AsString) AsBoolean

Dim c AsDouble, n AsDouble, r AsDouble

If Len(Code) < 10 Then Code = (10 - Len(Code) + "0") & Code

If Code = "0000000000"Or Code = "1111111111"Or Code = "2222222222"Or Code = "3333333333"Or Code = "4444444444"Or Code = "5555555555"Or Code = "6666666666"Or Code = "7777777777"Or Code = "8888888888"Or Code = "9999999999"Then

ReturnFalse

Else



c = Val(Mid$(Code, 10, 1))


Dim j AsInteger = 10

For i AsInteger = 1 To 9



n = n + Val(Mid$(Code, i, 1)) * j

j = j - 1


Next



r = n - Int(n / 11) * 11


If (r = 0 And r = c) Or (r = 1 And c = 1) Or (r > 1 And c = 11 - r) ThenReturn (True)

EndIf

EndFunction




116342

sagggad
دوشنبه 14 بهمن 1392, 12:04 عصر
116342
سلام دوستان این فانگشن به درستی کار میکنه ولی یه خط سبز می ندازه ریر عند فانگشنش چکار کنم که خط سبزرنگ از بین بره؟؟؟؟؟؟؟مشکلش چیه? از نظر کارکرد که کار میکنه. ولی میخوام اون خط هم از بین بره؟ ریتوران رو دقیقا باید کجای کد زیر قرار بدم ممنون


PublicFunction CheckCode(ByVal Code AsString) AsBoolean

Dim c AsDouble, n AsDouble, r AsDouble

If Len(Code) < 10 Then Code = (10 - Len(Code) + "0") & Code

If Code = "0000000000"Or Code = "1111111111"Or Code = "2222222222"Or Code = "3333333333"Or Code = "4444444444"Or Code = "5555555555"Or Code = "6666666666"Or Code = "7777777777"Or Code = "8888888888"Or Code = "9999999999"Then

ReturnFalse

Else



c = Val(Mid$(Code, 10, 1))


Dim j AsInteger = 10

For i AsInteger = 1 To 9



n = n + Val(Mid$(Code, i, 1)) * j

j = j - 1


Next



r = n - Int(n / 11) * 11


If (r = 0 And r = c) Or (r = 1 And c = 1) Or (r > 1 And c = 11 - r) ThenReturn (True)

EndIf

EndFunction




116342
سلام
بعید میدونم اون خط مشکلی در برنامه پیش بیاره

Mani_rf
دوشنبه 14 بهمن 1392, 12:07 عصر
اینو که من جواب دادم!
Function باید Return داشته باشه دوست من . درسته که تو VB.Net فقط به شما هشدار میده که Return نگذاشتید اما تو زبان هایی مثل #C به شما Error میده.
این پست (http://barnamenevis.org/showthread.php?439828-%D8%B1%D9%88%D8%B4-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-Function&p=1968398&viewfull=1#post1968398)رو بخون بیشتر توضیح دادم

farhad85
دوشنبه 14 بهمن 1392, 12:09 عصر
خوب تو این قسمت داره ولی آیا محل قرار گیریش مناسب نیست؟
If (r = 0 And r = c) Or (r = 1 And c = 1) Or (r > 1 And c = 11 - r) ThenReturn (True)

محمد آشتیانی
دوشنبه 14 بهمن 1392, 12:40 عصر
سلام

ببین دوست من ، مسئله اینه که کامپایلر میگه ممکنه با توجه به If .. Else هایی که داری ممکنه حالتی پیش بیاد که مقداری برگردونده نشه
یعنی تو کد شما اگه شرط If اول برقرار باشه که درسته، اما اگه بره توی Else اونجا Return باز توی یه If دیگه نوشته شده که اگه شرط If دومت برقرار نشه خب طبیعتا تابع هیچ مقداری برنمیگردونه
مشکل اینجاست

شما اگه If دوم رو اینجوری بنویسی درست میشه


If (r = 0 And r = c) Or (r = 1 And c = 1) Or (r > 1 And c = 11 - r) Then
Return True
Else
Return False
End If

Mani_rf
دوشنبه 14 بهمن 1392, 13:14 عصر
سلام

ببین دوست من ، مسئله اینه که کامپایلر میگه ممکنه با توجه به If .. Else هایی که داری ممکنه حالتی پیش بیاد که مقداری برگردونده نشه
یعنی تو کد شما اگه شرط If اول برقرار باشه که درسته، اما اگه بره توی Else اونجا Return باز توی یه If دیگه نوشته شده که اگه شرط If دومت برقرار نشه خب طبیعتا تابع هیچ مقداری برنمیگردونه
مشکل اینجاست

شما اگه If دوم رو اینجوری بنویسی درست میشه


If (r = 0 And r = c) Or (r = 1 And c = 1) Or (r > 1 And c = 11 - r) Then
Return True
Else
Return False
End If

دقیقا همونطوری که این دوستمون گفتن.
توی کد نویسی استاندارد میگن که تابع شما فقط باید یک Return صریح داشته باشه و از این که Return رو توی بلاک های کد قرار بدید دوری کنید.
اگر لازمه که این کار انجام بشه، بهتره که یک متغیر تعریف بشه و مقدار بازگشتی هرجا که لازمه توی اون متغییر ست بشه و در نهایت متغییر Return بشه

vb341
دوشنبه 14 بهمن 1392, 21:41 عصر
اگر دقت کنید در متن پیغام خطا گفته که در مسیر کد نمیتونه مقداری رو برگردونه و در نهایت مقدار اشتباهی رو برمیگردونه