رفتن به مطلب
  • 0

مشکل در if تو در تو


alirezakazemizaroomi

سوال

سلام

من از کدهای زیر تو برنامم استفاده کردم وبرای اینکه اگه یکی از شرطهای زیر درست بود شرط های بعدیش غیر فعال بشه برا همین بعد از هرشرط یه Return True نوشتم ولی بعضی مواقع شرط ها رو قاطی میکنه؛کدهام اینه:

Sub JobDone(Job As HttpJob)                             
    If Job.Success = True Then
If Job.JobName = "job1" Then 
	                                                                 '
			Dim result As Int                                                    '
			result = second  
                            If result < 180 Then           
				ToastMessageShow("کمتر از 3 دقیقه",False)                       
				ProgressBar1.Visible=True 
				Label1.Visible=True
				Label2.Text="180"
					Return True

			Else If result < 300 Then                                                   
				ToastMessageShow("کمتر از 5 دقیقه",False)                       
				ProgressBar1.Visible=True
				Label1.Visible=True
				Label2.Text="300"
					Return True
 
			Else If result < 420 Then                                                   
				ToastMessageShow("کمتر از 7 دقیقه",False)                       
				ProgressBar1.Visible=True
				Label1.Visible=True
				Label2.Text="420"
					Return True

			Else If result < 600 Then                                                   
				ToastMessageShow("کمتر از 10 دقیقه",False)                       
				ProgressBar1.Visible=True
				Label1.Visible=True
				Label2.Text="600"
					Return True
        
			Else If result < 1200 Then                                                   
				ToastMessageShow("کمتر از 20 دقیقه",False)                       
				ProgressBar1.Visible=True 
				Label1.Visible=True
				Label2.Text="1200"
					Return True
			End If         

آیا درست نوشتم؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

5 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

شما از Else If استفاده کردید یعنی دیگه نیاز به return ندارید و خودش بقیه را چک نمیکنه

همچنین اخر کار هم یه else خالی بذارید بعد شرطو ببینید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

RETURN معملولا برای چیزی استفاده میشه که خروجی کلی رو اخرش بگیره نباید اونو استفاده میکردید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

شما از Else If استفاده کردید یعنی دیگه نیاز به return ندارید و خودش بقیه را چک نمیکنه

همچنین اخر کار هم یه else خالی بذارید بعد شرطو ببینید

ممنون از جوابت

ولی من توشرطم نوشتم مثلا اگه از180 کمتر بودپیام بده کمتر از 3 دقیقه وبعدش گفتم اگه از 300 کمتر بود یه پیام بده،حال وقتی تو اجرای برنامه عدد مورد نظرمثلا 50 شد 50 هم از180 کمتره هم از 300 برا همین دوتا پیام میده ولی من میخوام شرط تو 180 متوقف بشه وادامه نده؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

ممنون از جوابت

ولی من توشرطم نوشتم مثلا اگه از180 کمتر بودپیام بده کمتر از 3 دقیقه وبعدش گفتم اگه از 300 کمتر بود یه پیام بده،حال وقتی تو اجرای برنامه عدد مورد نظرمثلا 50 شد 50 هم از180 کمتره هم از 300 برا همین دوتا پیام میده ولی من میخوام شرط تو 180 متوقف بشه وادامه نده؟

ببینید به این شکل و با استفاده از And بنویسید شرطو :

مثلا میگیم اگر‌ از ۱۸۰بیشتر و از ۳۰۰ کمتر بود ی پیام بده به این شکل :

Dim i As Int

If i > 180 And i < 300 Then

Msgbox(":P" , "")

End If

لینک ارسال
به اشتراک گذاری در سایت های دیگر

والا با دیدن این if ها خود Erel هم فک کنم هنگ کنه ! :)

 

بهرحال ...

 

یک روش خوب و استاندارد روش الیاس عزیز هست . 

 

کار با عملگرهای منطقی !

 

روش دوم : استفاده از Select Case

 

ولی مشکلی که تو این روش هست اینه که بیسیک مثل ویبی 6 اجازه

 

استفاده از متغیرهای مقایسه ای رو در داخل Case ها نمیده !

 

ولی خب بروشی میشه این محدودیت رو برداشت ، یه کد ساده براتون نوشتم :

	Dim x As Int=10
	Select Case True
		Case (x<7)
			Msgbox("less than seven","")
		Case (x>=7)
			Msgbox("greater than seven","")
		Case (x>2)
			Msgbox("greater than two","")
	End Select

تو این مثال بالا که زدم ، دو شرط آخری برقرارن ولی چون case دومی اول اجرا میشه ، دیگه

 

سومی اجرا نخواهد شد.

 

ارادت ./

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...