PDA

View Full Version : کوتاه کردن یک شرط



xrezax
پنج شنبه 22 مهر 1389, 19:52 عصر
دوستان من بوسیله کد زیر وقتی توی یک جمله ای که در تکست نوشته میشه یکی از کلمه هایی که تعریف کردم یکی باشه یک تایمر شروع بکار می کنه.
آیا راهی هست جموجورتر نوشت این دستورو ؟؟؟ یعنی بجای تکرار دوستور همه رو توی یک شرط بزارم.
کد برنامه اینه



If InStr(1, Text1.Text, "Ali", vbTextCompare) > 0 Or InStr(1, Text1.Text, "reza", vbTextCompare) > 0 Or InStr(1, Text1.Text, "mohammad", vbTextCompare) > 0 Then
Timer1.Enabled = True
Else
Timer1.Enabled = False
End If

modirmasool
پنج شنبه 22 مهر 1389, 22:53 عصر
یعنی بجای تکرار دوستور همه رو توی یک شرط بزارم.


منظورتون دقیقا از دو دستور چیه؟ شما الان یه دونه if دارین دیگه! :متعجب:

xrezax
جمعه 23 مهر 1389, 09:34 صبح
توی شرطم گفتم اگر توی جمله علی ، رضا ، محمد بود یک تایمر شروع بکار کنه.
من می خوام بجای تکرار این خط همه کلمه هارو توی یک شرط بزارم ( یعنی کوتاه ولی مفید بشه دستور )

(1, Text1.Text, "Ali", vbTextCompare) > 0

محسن شامحمدی
جمعه 23 مهر 1389, 11:27 صبح
خب اصلش که همینه ولی اگر اصرار بر کم کردن دستورات دارید می تونید اینطوری کار کنید

private function Exists(txt as string)as boolean

if InStr(1, Text1.Text, txt, vbTextCompare) > 0 then
Exists=true
else
Exists=false
end function

و از این به بعد توی شرطهاتون کافیه بنویسید

if exists("ali") or exists("09111111111") then
msgbox "barnamenevis.org"
end if

Slytherin
جمعه 23 مهر 1389, 14:16 عصر
شاید منظور دوستمون استفاده از Select Case هست....

modirmasool
جمعه 23 مهر 1389, 15:53 عصر
شاید منظور دوستمون استفاده از Select Case هست....

من که اینطور فکر نمیکنم! هرچی فکر میکنم متوجه نمیشم دو تا شرطی که ایشون میگن کجاست؟:لبخند::گیج:

vbhamed
جمعه 23 مهر 1389, 22:04 عصر
سلام

هر چقدر نام داريد تو رشته s بدين و با كاما جدا كنيد


Dim s$, i%, temp() As String

s = "reza,ali,mohammad,hamid,farhad,..."

temp = Split(s, ",")

For i = 0 To UBound(temp)
If InStr(LCase$(text1), LCase$(temp(i))) Then
Timer1.Enabled
Exit For
End If
Next
If i = UBound(temp) + 1 Then Timer1.Enabled = False