8.5 יצירת טיפוסי נתונים משלך 8.5.1 הצהרה על משתנה "טיפוסים מוגדרי משתמש" התא יכול לשלב משתנים מכמה טיפוסים שונים בכדי ליצור "טיפוסים מוגדרי משתמש". (ידועים כמבנים בשפת C). "טיפוסים מוגדרי משתמש" שימושיים מאד כאשר אתה רוצה ליצור משתנה בודד אשר מכיל מס' פיסות מידע. אתה יוצר "טיפוסים מוגדרי משתמש" ע"י הקלדת הצהרה אשר חייבת להמצא באזור ההצהרות של המודול. "טיפוסים מוגדרי משתמש" יכולים להיות מוצהרים כפרטיים או כציבוריים, ע"י מילות המפתח המתאימות. לדוגמא: Private Type MyDataType או לדוגמא, אתה יכול ליצור "טיפוסים מוגדרי משתמש" אשר שומרים מידע אודות מערכת מחשב: ' Declarations (of a standard module). הצהרה על משתנה "טיפוסים מוגדרי משתמש" אתה יכול להצהיר על משתנה מקומי, פרטי או ציבורי באותו "טיפוסים מוגדרי משתמש": Dim MySystem As SystemInfo, YourSystem As SystemInfo הטבלה הבאה מסכמת היכן ומה טווח ההכרה שאתה יכול להצהיר על "טיפוסים מוגדרי משתמש" והמשתנים שלהם. הערה: אם ההצהרה משתמשת במילה שמורה DIM, "טיפוסים מוגדרי משתמש" יהיו ע"פ ברירת המחדל ציבוריים. אם ברצונך ש"טיפוסים מוגדרי משתמש" יהיו פרטיים עליך לוודא שהוספת PRIVATE השמת וקבלת ערכים מ"טיפוסים מוגדרי משתמש" השמת וקבלת ערכים מהפרט של משתנה "טיפוסים מוגדרי משתמש", זהה לקביעת וקבלת מאפיינים: MySystem.CPU = "486" אתה יכול גם להשים ערכי משתנה אחד לתוך השני אם שניהם מאותו סוג. YourSystem = MySystem "טיפוסים מוגדרי משתמש" המכילים מערכים "טיפוסים מוגדרי משתמש" יכולים להכיל מערכים רגילים בעלי גודל קבוע מראש. לדוגמא: Type SystemInfo "טיפוסים מוגדרי משתמש" יכול גם לכלול מערך דינאמי: Type SystemInfo אתה יכול לגשת לערכים שבמחרוזת של "טיפוסים מוגדרי משתמש" באותה צורה שאתה ניגש למאפיין של עצם. Dim MySystem As SystemInfo אתה יכול גם להגדיר גם מערך של "טיפוסים מוגדרי משתמש": Dim AllSystems(100) As SystemInfo עקוב אחרי על אותם החוקים בכדי לגשת למרכיבים של מבני הנתון: AllSystems(5).CPU = "386SX" העברת "טיפוסים מוגדרי משתמש" לפרוצדורה אתה יכול להעביר משתנה לפרוצדורה מסוג "טיפוסים מוגדרי משתמש" Sub FillSystem (SomeSystem As SystemInfo) SomeSystem.CPU
= lstCPU.Text הערה: אם אתה רוצה להעביר "טיפוסים מוגדרי משתמש" במודול של טופס הפרוצדורה חייבת להיות מסוג פרטי. פונקציה יכולה להחזיר ערך מסוג "טיפוסים מוגדרי משתמש", ואתה יכול להעביר "טיפוסים מוגדרי משתמש" כאחד הרכיבים שמקבלת הפרוצדורה. "טיפוסים מוגדרי משתמש" תמיד מועברים כיחוס, אז הפרוצדורה משנה את הרכיב ומחזירה לפרוצדורה המזמינה כפי שהוצג בדוגמא הקודמת. הערה: בגלל שה"טיפוסים מוגדרי משתמש" מועברים בשלמותם מהפרוצדורות ואליהם,העברת "טיפוסים מוגדרי משתמש" מורכבים וגדולים בין הפרוצדורות יכולה לגרום האטה בביצועים. "טיפוסים מוגדרי משתמש" המכילים עצמים "טיפוסים מוגדרי משתמש" יכולים לכלול עצמים: Private Type AccountPack frmInput as Form מבני נתונים מכוננים יכולים להיות מורכבים כמה שתרצה. למעשה "טיפוסים מוגדרי משתמש" יכולים לכלול בתוכם "טיפוסים מוגדרי משתמש" אחרים. ע"מ שהקוד שלך יהיה יותר קריא ומובן וקל לדיבוג נסה לשמור את כל קטעי הקוד המגדירים "טיפוסים מוגדרי משתמש" במודול אחד. Type DriveInfo שימוש במיספור לעבודה עם סטים של קבועים מיספור מספק דרך נוחה לעבודה עם סטים של קבועים מקושרים, ולקשר אסוציאטיבית בין הקבוע לבין ערכו. לדוגמא אתה יכול להצהיר על מיספור של סט מספרים קבועים שמקושרים אסוציאטיבית לימי השבוע, ואז להשתמש בשם היום במקום מספר בקוד. אתה יוצר מספור ע"י הצהרה " ENUM " באיזור ההצהרות של המודול הסטנדרטי או המודול הציבורי. הצהרת מספור יכולה להיות פרטית או ציבורית,ע"י הוספתהמילים השמורות בזמן ההכרזה, לדוגמא: Private Enum MyEnum כברירת מחדל הקבוע הראשון במיספור יקבל את הערך 0,והקבועים הבאים יקבלו ערך הגדול באחד מקודמם.לדוגמא: בדוגמא הבאה במיספור "ימים" יקבל יום ראשון את הערך 0,יום שני את הערך 1 וכך הלאה. Public Enum Days טיפ: Visual Basic מספק מספור מובנה פנימי (Build in), vbDayofWeek, המכיל קבועים לימי השבוע. ע"מ לראות את הקבועים המוגדרים מראש במיספור, הקלד vbDayofWeek בחלון קוד, ו Visual Basic יציג אוטומאטית את קבועי המספור. אתה יכול להציב ערכים כקבועים ע"י שימוש בפקודה השמה ( '=' ). ניתן להציב מספרים LONG ומספרים שליליים. לדוגמא תוכל להציב מספרים שליליים שייצגו שגיאות. במספור הבא, הקבוע Indalid בעל ערך 1- והקבוע Sunday מאותחל כ-0. בגלל שSaturday הוא הקבוע הראשון הוא יאותחל כ-0. הערך של Monday הוא 1, וכו'. Public Enum WorkDays הערה: Visual Basic מטפל בערכי המיספור כLONG. אם תרצה להציב שבר (מס' עם נקודה עשרונית), Visual Basic יציב את המספר השלם הקרוב ביותר. ע"י ארגון אוספים של קבועים קשורים במיספור, ניתן להשתמש באותו קבוע בהקשרים שונים. לדוגמא, ניתן להשתמש באותו שם של יום , גם כיום בשבוע וגם כיום עבודה. ע"מ למנוע כפילות ודו משמעות בהתיחסות לקבוע, יש לייחד את שם הקבוע. הקוד בהמשך מתייחס לקבוע Saturday, המקבל ערכים שונים במיספורים DAY וWORKDAY בחלון המיידי. Debug.Print "Days.Saturday = " & Days.Saturday ניתן להשתמש בערך של קבוע במיספור אחד כאשר אתה מציב את הערך של הקבוע במיספור השני. לדוגמא: Public Enum WorkDays לאחר הצהרה על טיפוס מסוג מיספור, ניתן להצהיר על משתנה מסוג מיספור. ואז להשתמש במשתנה ע"מ לשמור את הערכים של קבועי המספור. לדוגמא: Dim MyDay As WorkDays רשום לפניך כי כאשר אתה מקליד את שורת הקוד השניה שלפניך, Visual Basic יציג אוטומאטית את ערכי הקבועים של WORKDAY ברשימת Auto List Members. תמונה 8.7 Visual Basic מציג אוטומאטית את ערכי הקבועים.
מכיון שהקבוע Sunday מאותחל כ0 גם כן, Visual Basic יציג את את תיבת ההודעות גם אם תחליף את הקבוע Saturday בקבוע Sunday בשורה 2. MyDay = Sunday ' Sunday also evaluates to 0. הערה: למרות באופן נורמאלי מוצב רק קבועי מיספור למשתנה שמוצהר בתור מיספור, ניתן להציב כל מספר LONG אחר.
|