התנהגות טפשית של מהדר vb6
-
כשעושים תנאי עם or הוא קורא את ה or למרות שכבר בארגומנט הראשון יש תשובה חיובית.
מישהו יודע למה הוא מתנהג ככה?? והאם יש דרך לעקוף את זה, והאם גם ב selectcase זה עובד ככה?? זה חשוב לי עכשיו כי זה גורם לי לטיפול מיותר בשגיאות (התנאי הוא כזה שאם האפשרות הראשונה היא נכונה, אז האפשרות השניה באמת מחזירה שגיאה, ורק אם האפשרות הראשונה לא נכונה אזי יש צורך בקריאת האפשרות השניה שבהכרח איננה שגיאה).
אגב יש לי חידוש לאנשים שעוד לא יודעים יכולת ב vb6 שלא קיימת בדוט נט שימוש ב selectcase כתנאי if לכל דבר הנה:
Select Case True case mystr = "hllow" case mynumber * yournumber > 100 end select
זה חסך לי המון המון קוד בזמנו, ודוקא בדוט נט ראיתי שהורידו את האפשרות הזאת....
פורסם במקור בפורום CODE613 ב16/01/2014 18:09 (+02:00)
-
בשביל זה יש דוטנט orElse אבל ב VB6 אין מצב [וזה די מוזר למה ב VB6 זה לא קיים כאשר ב C++ כבר מזמן מזמן יש את || שעובד כמו orElse ואת && שעובד כמו AndAlso], אגב יש גם את And ו AndAlso שהאחרון נתמך רק בדוטנט וחוסך המון בדיקת שגיאות.
מה שביטלו בדוטנט שהיה בVB6 זה בגלל שהכל צריך להיות מומר בסופו של דבר ל IL לכן VBNET התרחקה בהרבה דברים מ VB6 לכיון C#לגבי הקוד שהבאת קימפלתי אותו בדוטנט ולא קיבלתי שום שגיאות.
פורסם במקור בפורום CODE613 ב16/01/2014 18:14 (+02:00)
-
Select Case אכן עושה את העבודה, הוא לא בודק לאחר תנאי שהתקיים (במקרה של AND צריך להפוך את ההתנייה כדי שזה יהיה OR).
בVB.NET ממשיך הסינטק של הSelect Case גם כתנאי וגם כבדיקת ערך מרובה.
בC# זה הSwitch והוא שונה מאוד: הוא לא יכול לבדוק תנאים, הוא גולש משורה לשורה עד לBreak.טיפ: בVB וגם בVBA אפשר לכתוב ככה:
Dim i As Integer Select Case i Case 5 To 8 Case Is > 12 Case Else End Select
פורסם במקור בפורום CODE613 ב17/01/2014 12:36 (+02:00)