PDA

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 رو پیشنهاد میکنم ، برای کاره شما این نوع شرط بهتره