משהו מדהים שגיליתי Continue For
-
יצא לי לכתוב בסוף שבוע שעבר תוכנית קטנה ללקוח בWINFORM.
התוכנית ממירה קובץ אקסל לתבנית מיוחדת שהלקוח צריך להכניס לאיזו מערכת שלו.
(דרך אגב, את הקריאה של האקסל ביצעתי עם ExcelDataReader, מומלץ לקריאה מקבצי אקסל ללא תלות באופיס)
במהלך כתיבת לולאת הFOR, הייתי צריך לבדוק כמה דברים, ואם משהו לא התקיים, פשוט לא לבצע, אלא להמשיך לאיבר הבא במערך.
דא עקא, שהסירבול עם הIFים המקוננים פשוט שיגע אותי, וחיפשתי דרך יותר קצרה.
ואז, מצאתי. אפשר להשתמש בContinue For, זה פשוט ממשיך לאיבר הבא.דוגמא:
If tmp.Length = 0 Then Continue For
מישהו יודע איך ממשים את זה בVB6 או VBA?
פורסם במקור בפורום CODE613 ב05/01/2014 23:05 (+02:00)
-
ב:
For i=0 to 5
אפשר אכן להשתמש בGoTo, ולהוסיף לi ידנית ספרה (אם כי מספרים שזו שיטה שעברה מן העולם, אבל בכל זאת עובדת.. :lol: :lol: )
אבל ב
For Each Var In Array
איפה תשים את הGoTo?
הרי כדי שהפור יעבור לאיבר הבא צריך להגיע לנקסט. (במחשבה שנייה, אם הבנתי נכון, אתה מתכוון ששורה לפני הנקסט לשים לייבל, ולהפנות לשם, נכון??)
תודה!פורסם במקור בפורום CODE613 ב05/01/2014 23:54 (+02:00)
-
במחשבה שנייה, אם הבנתי נכון, אתה מתכוון ששורה לפני הנקסט לשים לייבל, ולהפנות לשם, נכון??
נכון וזה נכון גם לגבי i לא צריך להוסיף ספירה.
באמת שאנשים משתמשים במושג GoTo?
זה הדבר הכי גרוע שאפשר לחשוב ברמה תכנותית !ובכן לידיעתך כל לולאה משתמשת ב goto (אני זוכר שכשהתחלתי לתכנת לא ידעתי לעשות לולאות, וגיליתי את goto לפני שגיליתי את הלולאות, אז "המצאתי" לולאה על ידי goto והתקשרתי לחבר שיודע תיכנות להתלהב לו שהמצאתי המצאה אדירה בתיכנות, "קוד שחוזר על עצמו!!!" היום אני חושב שלא הייתי כל כך טיפש, כי זה מה שהמהדר עושה בסך הכל.
אז אני לא יודע מי קובע נורמות בנושא הזה, קראתי בעוד כמה מקומות "לא להשתמש ב goto" כאילו שעדיף לכתוב חמישים שורות קוד במקום goto, כל נורמה שאין מאחוריה היגיון, אי אנו מחוייבים לה כלל ועיקר אלא מטעמי נימוס בעלמא... אז יסביר נא... (אני מסכים שיש בזה חסרון בארכיטקטורה, אבל כשהבן אדם מתפתל מכאבי ראש על מאות איפים שהוא כותב, לא תיתן לו כדור???)פורסם במקור בפורום CODE613 ב06/01/2014 00:33 (+02:00)
-
אני זוכר שכשהתחלתי לתכנת לא ידעתי לעשות לולאות, וגיליתי את goto לפני שגיליתי את הלולאות, אז "המצאתי" לולאה על ידי goto
גם אני.... עד היום יש לי איזה דוח עם לולאה שרצה עם GOTO 20 פעמים עד ליציאה, זה פשוט נשאר שם מטעמים הסטוריים.
@ארכיטקטאני מסכים שיש בזה חסרון בארכיטקטורה, אבל כשהבן אדם מתפתל מכאבי ראש על מאות איפים שהוא כותב, לא תיתן לו כדור???
מת על ההגדרות שלך :lol: :lol: :lol:
בכל מקרה אני מאמץ בחום את הGOTO במקום לעשות קוד ספגטי. (עד שיבוא דוטנט לאקסס גואל...)פורסם במקור בפורום CODE613 ב06/01/2014 00:38 (+02:00)
-
מאוד מדאיג אותי הדיון הזה. אתם אפילו לא מבינים את האסון של השימוש בפקודה הזאת (גם לא משתמשים איתה לפי מספר שורה, אלא לפי איזור בקוד).
ע"ע: http://www.internet-israel.com/?p=3590
פורסם במקור בפורום CODE613 ב06/01/2014 08:55 (+02:00)
-
מאוד מדאיג אותי הדיון הזה. אתם אפילו לא מבינים את האסון של השימוש בפקודה הזאת (גם לא משתמשים איתה לפי מספר שורה, אלא לפי איזור בקוד).
כתוב שם:
אם אנחנו ממש רוצים שמשהו יקרה, כדאי לשים אותו בתוך פונקציה ולא להתחיל לשוטט ברחבי הקוד עם goto
וגם:
goto נחשבת לטכניקת תכנות גרועה – כיון שאם משתמשים בה זה עלול לגרום לקוד להיות לא קריא
להזכירך, בדוגמא שנתן ארכיטקט מדברים רק על מקום אחד, ואחד בלבד, שבו משתמשים בזה, וגם שם במידה ובמשורה, וזה פשוט שווה ערך לContinue For.
לפי מה שאתה טוען, גם בContinue For אסור להשתמש, כי הקוד יהיה לא קריא וכו' וכו', וצריך להשתמש עם פונקצייה... ולא נראה לי שאתה באמת חושב כך.פורסם במקור בפורום CODE613 ב06/01/2014 09:13 (+02:00)
-
אולי אפשר להריץ פונקציה בתוך הfor.
ולעשות return בפונקציה.
אין return בפונקצייה בVBA
בכל מקרה השאלה והדיון היו על מקרה קיצון שבו המתכנת רוצה לשלוט בלולאה, בלי יותר מדאי קוד ספגטי ותנאים מסורבלים...פורסם במקור בפורום CODE613 ב06/01/2014 22:10 (+02:00)