View Full Version : مدیریت شرط
xrezax
شنبه 15 مرداد 1390, 19:56 عصر
6 تا شرط دارم (if) می خوام یک شرطی تعریف کنم و به برنامه بگم اگه دستوری که صادر شد توی این شرط ها نبود برنامه اررور (msgbox)خودمو نشون کاربر بده
محسن واژدی
شنبه 15 مرداد 1390, 22:06 عصر
سلام علیکم
هم میتوانید شروط If را بصورت If..ElseIf..EndIf بنویسید، هم میتوانید هر شش شرط را در یک خطر If بنویسید و هم آنها را در یک Case بنویسید:
نمونه حالت اول:
If A = 1 Then
'commands
ElseIf A = 2 Then
'commands
ElseIf A = 3 Then
'commands
ElseIf A = 4 Then
'commands
Else
MsgBox "Error...", vbCritical
End If
صورت دوم:
If A = 1 Or A = 2 Or A = 3 Or A = 4 Or A = 5 Then
'commands
Else
MsgBox "Error...", vbCritical
End If
و نوع سوم:
Select Case A
Case 1
'commands
Case 2
'commands
Case 3
'commands
Case 4
'commands
Case 5
'commands
Case Else
MsgBox "Error...", vbCritical
End Select
موفق باشید
xrezax
یک شنبه 16 مرداد 1390, 08:34 صبح
من منظورتو نگرفتم
این سورس من ببین
If InStr(1, GetPM.Text, "reza", vbTextCompare) > 0 Then
Call Dir
End If
'------------------------ 1
If InStr(1, GetPM.Text, "ali", vbTextCompare) > 0 Then
Call DirFile
End If
'------------------------ 2
If InStr(1, GetPM.Text, "mamd", vbTextCompare) > 0 Then
Call View
End If
'------------------------ 3
If InStr(1, GetPM.Text, "mohsen", vbTextCompare) > 0 Then
Call DeleteFile
End If
'------------------------ 4
If InStr(1, GetPM.Text, "farid", vbTextCompare) > 0 Then
Call DeleteDir
End If
'------------------------ 5
If InStr(1, GetPM.Text, "amir", vbTextCompare) > 0 Then
Call FileAddress
End If
'------------------------ 6
If InStr(1, GetPM.Text, "omid", vbTextCompare) > 0 Then
Call FileName
End If
حالا می خوام به برنامه بگم اگه دستوری که صادر شد توی این شرط ها نبود برنامه اررور (msgbox)خودمو نشون کاربر بده
محسن واژدی
یک شنبه 16 مرداد 1390, 08:43 صبح
برای این نوع بایستی از روش اول استفاده کنید:
If InStr(1, GetPM.Text, "reza", vbTextCompare) > 0 Then
Call Dir
ElseIf InStr(1, GetPM.Text, "ali", vbTextCompare) > 0 Then
Call DirFile
ElseIf InStr(1, GetPM.Text, "mamd", vbTextCompare) > 0 Then
Call View
ElseIf InStr(1, GetPM.Text, "mohsen", vbTextCompare) > 0 Then
Call DeleteFile
ElseIf InStr(1, GetPM.Text, "farid", vbTextCompare) > 0 Then
Call DeleteDir
ElseIf InStr(1, GetPM.Text, "amir", vbTextCompare) > 0 Then
Call FileAddress
ElseIf InStr(1, GetPM.Text, "omid", vbTextCompare) > 0 Then
Call FileName
Else
MsgBox "Error...", vbCritical
End If
موفق باشید
xrezax
یک شنبه 16 مرداد 1390, 09:05 صبح
ممنون از لطفت اما کار نداد:لبخندساده:
محسن واژدی
یک شنبه 16 مرداد 1390, 09:20 صبح
در صورت امکان بیشتر توضیح دهید، چون نوشتن دستوراتتان تنها به این ضورت ممکن است
quiet_programmer
یک شنبه 16 مرداد 1390, 12:06 عصر
با سلام.
در کدی که جناب xrezax (http://barnamenevis.org/member.php?98736-xrezax) گذاشتن شرطها به هم (یا) شده اند. یعنی احتمال داره تمامی شرطها اجرا بشه یا مثلا دوتا شرط اجرا بشه و ... ولی در کدی که جناب mohsenvj (http://barnamenevis.org/member.php?104729-mohsenvj) گذاشتین اگر یک شرط اجرا شد شرط بعدی به هیچ وجه اجرا نخواهد شد و دارای خطای منطقیه. برای حل این مشکل میتونی کد رو به صورت زیر تغییر بدی:
Dim Flag As Boolean
Flag=False
If InStr(1, GetPM.Text, "reza", vbTextCompare) > 0 Then
Call Dir
Flag=True
End If
'------------------------ 1
If InStr(1, GetPM.Text, "ali", vbTextCompare) > 0 Then
Call DirFile
Flag=True
End If
'------------------------ 2
If InStr(1, GetPM.Text, "mamd", vbTextCompare) > 0 Then
Call View
Flag=True
End If
'------------------------ 3
If InStr(1, GetPM.Text, "mohsen", vbTextCompare) > 0 Then
Call DeleteFile
Flag=True
End If
'------------------------ 4
If InStr(1, GetPM.Text, "farid", vbTextCompare) > 0 Then
Call DeleteDir
Flag=True
End If
'------------------------ 5
If InStr(1, GetPM.Text, "amir", vbTextCompare) > 0 Then
Call FileAddress
Flag=True
End If
'------------------------ 6
If InStr(1, GetPM.Text, "omid", vbTextCompare) > 0 Then
Call FileName
Flag=True
End If
If Flag=False Then
MsgBox "Error...", vbCritical
End If
محسن واژدی
یک شنبه 16 مرداد 1390, 12:19 عصر
با سلام.
در کدی که جناب xrezax (http://barnamenevis.org/member.php?98736-xrezax) گذاشتن شرطها به هم (یا) شده اند. یعنی احتمال داره تمامی شرطها اجرا بشه یا مثلا دوتا شرط اجرا بشه و ... ولی در کدی که جناب mohsenvj (http://barnamenevis.org/member.php?104729-mohsenvj) گذاشتین اگر یک شرط اجرا شد شرط بعدی به هیچ وجه اجرا نخواهد شد و دارای خطای منطقیه. برای حل این مشکل میتونی کد رو به صورت زیر تغییر بدی:
سلام علیکم
بله، صحیح میفرمائید، اصلا" حواسم نبود
موفق باشید
arenaw
دوشنبه 31 مرداد 1390, 01:18 صبح
میتونی یه متغیر temp از نوع boolean تعریف کنی و مقدارش رو False کنی. تو if های اول کد Temp = True رو اضافه کنی. if آخر رو بنویسی if temp = false then.... یعنی شرطای قبل اجرا نشدن
setroyd
دوشنبه 31 مرداد 1390, 04:38 صبح
اره یه اسم تغییری ایجاد نمیکنه بله میشه .
M-NINJA
دوشنبه 31 مرداد 1390, 11:59 صبح
من Select case رو پیشنهاد میکنم ، برای کاره شما این نوع شرط بهتره
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.