
HandleDigitGrouping. הפונקציה נוצרה מהקוד של לחיצת הפריט, כדי שאפשר יהיה לקרוא לה ישירות ולא דרך לחיצה מדומה.float.Parse, גורמת לקריסה. עוטפים את הקוד ב-try ו-catch, כדי להציג למשתמש הודעה במקום קריסה.ex.Message ואת ex.StackTrace באמצעות string.Format. אפשר לעשות את אותו דבר גם בחיבור מחרוזות עם +.isNegative מוסיף אחד למיקום כשהמספר שלילי.TextBox1.Text.Replace(",", "") מחזיר מחרוזת חדשה ולא משנה את המקורית.try { ... } catch (Exception ex) { ... } לטיפול בחריגה.string.Format("{0} {1}", ex.Message, ex.StackTrace) להצגת פרטי השגיאה.הטקסט המלא של הדקות הראשונות בהרצאה «פרויקט ב-#C - מחשבון פשוט - חלק 17» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
טוב, אז היום אנחנו רוצים להמשיך עם הדיג'יט גרופינג אז למעשה הדבר הבא שאנחנו רוצים לעשות זה שאם הדיג'יט גרופינג אצלי לא מסומן אז אני רוצה שלא יהיה דיג'יט גרופינג בוא נראה כרגע מה קורה, טוב כרגע אם אני רושם מספר אז כמובן שאין לי דיג'יט גרופינג אם אני אומר לו דיג'יט גרופינג אז הוא מוסיף דיג'יט גרופינג אבל אם אני מוריד לו אז הוא
לא מסיר אז איך נעשה את זה? אז האמת שהכי פשוט זה תמיד בתחילת הפונקציה כאן להסיר לפני האיף הזה להסיר את הפסיקים ואם הוא צ'ק אז לעשות את הפסיקים מחדש אז בואו נעשה את זה שיפטף 5 ולהסיר את הפסיקים איך מסירים את הפסיקים טקסטבוקס נקודה טקסט נקודה ריפלייס יש גם רימוב אבל רימוב לא
רוצה את העבודה ריפלייס ואני רוצה להגיד לו זה עם צ'ארים אבל אז אני חייב לתת לו צ'אר ואני לא רוצה לתת לו משהו ריק אז אני אבחר פה את השני הסטרינג הראשון והסטרינג השני והסטרינג השני, הניו צ'אר יהיה או הניו סטרינג ניו ואליו יהיה ריק והמקורי זה הפסיקים יפה, אבל ריפלייס
לא משנה את הסטרינג המקורי הוא מחזיר סטרינג חדש אז נשכפל את זה, קופי רווח שווה רווח, פייסט ו-F5 אז נגיד לו 1, 2, 3, 4, 5, 6, 7, 8, 9 עם ובלי מצוין עם ובלי טוב הדבר הבא זה לטפל בבקספייס אז אם נגיד לו דיג'יט גרופינג ואז נגיד לו
בקספייס אז המספר נהרס למעשה אם עכשיו אני אגיד לו דיג'יט גרופינג בלי דיג'יט גרופינג עם אז יעשה את זה נכון זאת אומרת אם אחרי כל בקספייס אני פשוט אפעיל את הפונקציה שתבדוק אם זה צ'ק ואם זה צ'ק אז היא קודם כל תסיר את הפסיקים ואחרי זה תחזיר אותם אז הכל יהיה מצוין אז האמת הדבר הכי פשוט זה שכשאני לוחץ על Backspace
פשוט לעשות Perform Click ל-Digit Grouping. הבעיה אם אני אעשה לו Perform Click הוא גם יחליף את ה-Chubchik אז זה לא יעבוד כל כך טוב. אז מה שאנחנו צריכים באמת זה להוציא את הקוד של ה-Click לפונקציה נפרדת.
אז בואו נעשה את זה. אז שיפט F5 ונגדיר פונקציה שנקראת HandleDigit Grouping ונגיד לו לייצר אותה generate methods tab for handle digit grouping בתוך פורם אחד כן, קליק, ואז אם נגלול קצת למטה נגלה שהוא כתב לנו כאן למטה את הפונקציה אוקיי, אז את כל הקוד הזה אנחנו ניקח ctrl x עשיתי ונדרוס את הthrow ונעשה פה paste
יש פה רווח מיותר, יפה, אז בואו נראה אם זה עדיין עובד, אם לא הרסנו שום דבר, נריץ אחד, שתיים, שלוש, ארבע, חמש, שש, שבע, שמונה, תשע, עם, אמרתי לו תשע?
תשע, ובלי. ואם, מצוין. טוב, אז עכשיו כשאני אומר לו Backspace, אמרנו אני רוצה לקרוא ל-HandleDigitGrouping.
היא תראה שאני צ'ק. עכשיו, היא בכל מקרה תסיר את הפסיקים, אבל מכיוון שאנחנו צ'ק, אז היא תחזיר אותם, אבל במקום הנכון, לפי חישוב מחדש. אז בואו נלך ל-Backspace, בוא נעצור את הריצה backspace ונגלול פה למטה בסוף בסוף בסוף כאן נגיד לו handle handle digit grouping יפה בוא נריץ ואחת שתיים שלוש ארבעה חמש שש שבע שמונה תשע עם ובלי
ואם ובקספייס עובד מצוין יפה אבל מה לגבי אם אני מוסיף עכשיו תווים טוב כשאני מוסיף זה בעצם אותו דבר, אחרי כל הוספה אולי את זה היינו צריכים לעשות לפני הבקספייס אבל אחרי כל הוספה בעצם אני רוצה לעשות כאילו בלי ואם בעצם אני רוצה לקרוא שוב ל-HandleDigitGrouping
אחרי כל הוספה בעצם נקרוא ל-Digit Grouping ל-HandleDigit Grouping אז הוספה, בואו נצמצם רגע Outlining ו-Collapse the Definition מצמצם לי, באמת שאנחנו צריכים קצת לעשות סדר בקוד שלנו אנחנו מחפשים את נומרה, אז דרך אגב יש פה גם משהו מאוד נוח פה אני יכול גם לאתר את כל הפונקציה שכתבתי אז איפה היא? הנה Add Numerals
יפה, נפתח אותה נגלול קצת למטה אז למעשה אחרי הכל אני רוצה גם לקרוא להנדל דיג'יט גרופינג בואו ננסה את זה הרץ ואחת, שתיים, שלוש, ארבע, חמש, שש, שבע, שמונה, תשע דיג'יט גרופינג בסדר
Backspace בסדר עכשיו אני אוסיף תווים זה נראה מצוין אוקיי וגם נקודה עשרונית וכולם אני חושב די מאושרים מה לגבי המספר הזה ועוד המספר הזה אה אז אחרי שווה בעצם גם צריך לעשות handle digit grouping אז בואו נעשה את זה גם בשווה אז בסוף השווה array confirm float גם
handle digit grouping 1 2 3 4 5 רגע עם דיג'יט גרופינג, אני אמרתי לו 5, 1, 2, 3, 4, 5 ועוד 1, 2, 3, 4, 5, 6 שווה, אוקיי, נראה מצוין.
אבל האמת היא שגם אם ניקח מספר גדול ונעשה לו שורש, אז גם פה צריך ואחרי 1 חלקי גם צריך. נלך לשורש, אז אחרי שורש גם צריך וגם 1 חלקי שזה אינברס, הנה הוא כבר, אנחנו פה באזור, גם צריך.
אז ניקח מספר גדול ונגיד לו digit grouping ושורש, מצוין, ואחד חלקי, הוא שם גם popsic ועכשיו הוא, אני מניח, יקרוס.
כן, אז זהו. לפעמים, לא דיברנו יותר מדי על קריסות עד היום, לפעמים יש קריסות, תוכנית קורסת. לדוגמה, כאשר מה שיש בטקסטבוקס לא מתאים, לדוגמה, לפלואוט, לפונקציה float.parse.
אז לא יודעת לפענח את המספר 1E פסיק מינוס 0.7 נקודה. 1E זה אומר 1 בחזקת 10 בחזקת, סליחה, 1 כפול 10 בחזקת מינוס 7. זה 1 חלקי 10 עם 7 אפסים או משהו כזה.
1 עם 7 אפסים. אז זה סוג של פלואוט והפסיק הזה נכנס שם בגלל הנקודה העשרונית. זה בעצם שלוש פעמים שמאלה מהנקודה העשרונית.
בואו נגיד שאני משאיר לכם את זה כתרגיל לפתור שלא יהיו באגים בתוכנית שלנו. אוקיי, אבל באופן כללי כשיש לנו חריגה, זה נקרא חריגה, אם אני אמשיך להריץ מהנקודה הזו, אז זהו, הוא לא רוצה להמשיך מכאן.
אז אחד מהדברים שאנחנו יכולים לעשות כשאנחנו מוצאים את המוצר שלנו ללקוח, זה בעצם להגן על הלקוח מפני טעויות של המתכנתים. וגם להגן אל הלקוח מפני טעויות שהוא בעצמו עושה בואו נראה מה אפשר לעשות אז בואו נעצור את התוכנית ובואו קודם כל נראה איך זה נראה מבחינת הלקוח נעשה בדרך כלל אנחנו עושים סטארט דיבאגינג או לוחצים על F5 עכשיו אם נלך פה
לדיבאג נראה שיש סטארט דיבאגינג אבל יש גם סטארט וויז אאו דיבאגינג קונטרול F5 וזה בעצם החוויה של הלקוח שלנו מריץ את זה ללקוח שלנו אין את הוויז'ל סטודיו כך שאם הוא עושה מין טעות שכזו בואי ננסה לשחזר את השגיאה הוא ערוץ 1 חלקי ועוד פעם אוקיי בואי ננסה רגע לשחזר את זה לשחזר את השגיאה הזו קצת מסובך לא הצלחנו
אבל אפשר ליצור שגיאה אחרת של 1 חלקי 0 שווה ואז הוא כותב לנו פה infinity שזה התשובה שלו בעצם ל-1 חלקי 0 אבל הוא שם לנו פה פסיקים אם עכשיו אני אגיד לו כפול עכשיו כל דבר שאני אומר לו גורם לשגיאה הזו אז כשאני מחוץ לוויז'ול סטודיו, נכון?
אנחנו עכשיו לא מדבגים הרי, נכון? הרי זה עדיין ירוק, הוא עדיין זמיני, זה אומר שאנחנו לא מריצים מתוך הוויז'ול סטודיו אני יכול עכשיו לכבות את הוויז'ול סטודיו ועדיין המחשבון ימשיך לרוץ, המחשבון שלנו אבל את ההודעה הזו המשתמש מקבל, למרות שאין לו ויז'ול סטודיו הוא יכול ללחוץ פה על דיטיילס ולראות, וכבר האמת שראינו את ההודעה הזו בתחילת הקורס
הוא יכול לראות פה את מכפנית הקריאות מלמטה למעלה ממשהו native לווינד או משהו מאוד מאוד אלמנטרי בתוך Windows עד לפונקציה בסופו של דבר form אחד handle operation כנראה שלנו ויש פה parse ובסופו של דבר to number שזאת היא בעצם קרסה.
אז בואו נגיד שאם אנחנו רוצים להגן על המשתמש שלנו מפני הודעות כאלה כי סך הכל זה הודעה מבלבלת שהוא עלול ללחוץ על קוויט ואולי אנחנו לא רוצים שהוא ילחץ על קוויט סך הכל אנחנו רוצים שהוא תמיד ילחץ על קונטיניום או משהו כזה ובכן אנחנו לא רוצים שהוא יקבל כזו הודעה
מבלבלת אחת מהפתרונות זה לשים טריי וקאץ׳ אז האמת היא שבדרך כלל במערכות שאני מפתח על כל כפתור שהיוזר יכול ללחוץ עליו אני תמיד שם מין כזו הגנה בואו נראה את זה אז נעשה שיפט F5 אה, שיפט F5 עכשיו לא עובד חייבים לסגור את המחשבון, את המחשבון שלנו
צריכים לסגור, אי אפשר בשיפט F5 כי לא הראתנו את זה מתוך הווישול סטודיו ואם ניקח לדוגמה את inverse, אז נשים פה try וכאן בסוף catch ופה נגיד לו exception e x ובדרך כלל מה שאני עושה זה מין משהו שכזה messagebox.show אני מציג ליוזר את ההודעה,