PDA

View Full Version : مشکل با دستور if و select در vb.net



aminsaeedi
سه شنبه 24 بهمن 1391, 14:04 عصر
دوستان من یه ورودی از پورت سریال دارم که موقع فراخوانی داخل متغیر s می ریزم

با تایمر اون رو نمایش می دم

حالا می خوام با دستور select از اون استفاده کنم که جواب نمیده

Select Case s
Case fanon
PicFan.Image = System.Drawing.Image.FromFile("D:\Project\Project\Vs 2012\fanfinal.gif")
Case fanoff
PicFan.Image = System.Drawing.Image.FromFile("D:\Project\Project\Vs 2012\fan.gif")
Case Else
PicFan.Image = System.Drawing.Image.FromFile("D:\Project\Project\Vs 2012\Heater.gif")
End Select

با توجه به اینکه مقدار داخل متغیر با شرط های من برابر هست ولی به قسمت case else می ره

Hybrid
سه شنبه 24 بهمن 1391, 19:10 عصر
سلام ، اطلاعات بیشتری رو بده ، متغیر s شما از چه نوعی تعریف کردین ؟ چه نوع اطلاعاتی رو داخلش قرار میدین ؟ fanon یا fanoff از نوع enum هستند ؟

aminsaeedi
چهارشنبه 25 بهمن 1391, 09:04 صبح
هر سه متغیر از نوع string هستند

fanoff , fanon از طریق پورت سریال داخل متغیر s ریخته می شود و توسط دستور بالا چک می شود که کدوم دریافت شده

select case s
case "fanon"
case "fanoff"
end select

من به شکل بالا هم نوشتم ولی جواب نداده داخل متغیر ها هم همین رشته های مثال بالا هستند

فرید نجفلو
چهارشنبه 25 بهمن 1391, 09:27 صبح
سلام
شما روی خط select case s یک Break Point بذارید (با کلید F9) وقتی اجرا به اون خط رسید و ایستاد ببینید داخل s چه مقداری هست
ممکنه اصلا متغیر شما درست پر نمیشه یا چیزی که داخلش هست با هیچ کدوم از اونایی که دارید مقایسه می کنید برابری یا تناسب نداره

aminsaeedi
چهارشنبه 25 بهمن 1391, 09:34 صبح
نه مطمئن هستم که درست هست چون روی یک لیبل محتویاتش رو نشون میده

در ضمن من اطلاعی از این f9 نداشتم ممنون که آموزش دادید

همونی هست که باید باشه یکی از دو رشته داخل شرط میاد

aminsaeedi
چهارشنبه 25 بهمن 1391, 09:42 صبح
http://s2.picofile.com/file/7655681505/Capture.jpg

این هم تصویر این قضیه

aminsaeedi
چهارشنبه 25 بهمن 1391, 17:37 عصر
کسی نفهمید این مشکل از کجاست

arman_Delta2002
چهارشنبه 25 بهمن 1391, 17:49 عصر
:قهقهه: عزیزم همون جا موس رو ببر روی S ببین مقدارش چی هست؟!! مقدار اس رو بگو به ما مرسی انقدم حجم بالا نگیر عکس رو من هنوز نتونستم نیمه پاین عکس رو ببینم

بعد اخیرن اف فکر کنم یه فاصله وجود داره بعد کتشن بسه میشه عزیزم
"fanoff "
"fanoff"
این رو بنویسی مشکلت حل میشه
Select case Trim(s)

aminsaeedi
چهارشنبه 25 بهمن 1391, 18:08 عصر
این عکس کمتر از 50 کیلو بایت فضا داره نمی دونم شما از چه سرویس دهنده ای استفاده می کنید

مقدار متغیر s دو حالت بیشتر نداره یا شرط اول یا شرط دوم

خط دوم رو هم نفهمیدم چی گفتید

دستور trim نمی دونم چکار می کنه ولی اونم نشد

فرید نجفلو
چهارشنبه 25 بهمن 1391, 21:14 عصر
خط دوم رو هم نفهمیدم چی گفتید
ایشون گفتن که اگه دقت کنید تو قسمت پایین که مقدار متغیر رو نشون می ده انتهای مقدارش یعنی بعد از آخرین f یک فاصله خالی دارید
حالا شما بنویسید:

select case s.Trim

aminsaeedi
چهارشنبه 25 بهمن 1391, 22:21 عصر
دست شما درد نکنه مشکل با دستور شما حل شد آقا فرید

فقط دستور شما با دستور آقا آرمان چه فرقی می کنه s.trim و trim(s)