לארז, אחה"צ טובים !

  • פותח הנושא cald
  • פורסם בתאריך

cald

New member
אמנם אני לא ארז, אבל...

אני אנסה להסביר לך כמה שיותר על קריאה מתוך קבצים ב VB. אך דבר ראשון, ללחיצה על מקש האנטר: באירוע ה KeyDown של Text1, המשתנה KeyCode מקבל את הערך של המקש הערך של מקש ה אנטר הוא 13. ולכן, השורה שאתה צריך לכתוב הולכת ככה If KeyCode=13 Then כאן לקרוא לפנוקציה, או כל דבר אחר End If - - - ועכשיו, לחלק המסובך יותר, קריאה מתוך קובץ. הפקודה המרכזית, שפותחת את הקובץ היא Open. התחביר שלה הולך ככה: Open Filename For Input As FileNumber המשפט הזה הוא קבוע, לפתיחה של כל קובץ, חוץ מהקטע Filename, שבמקומו אתה צריך להכניס את שם הקובץ, במקרה שלך Text1.Text. והקטע FileNumber, שבו אתה צריך לציין את מספר הקובץ. מספר הקובץ הוא לא מספר ייחודי לקובץ שאתה צריך לדעת אותו מבעוד מועד, הוא פשוט ישמש אותך בשלב יותר מאוחר כדי לציין מאיזה קובץ אתה רוצה לקרוא. משפט לדוגמה: Open Text1.Text For Input As 1 זהו, הקובץ פתוח ומוכן לקריאה. ועכשיו, הפקודה שבה אנו משתמשים כדי לקרוא מתוך הקובץ נקראת Input. התחביר של קריאה מתוך קובץ בשימוש עם Input, הולך ככה: Input #FileNumber, Variable שוב, במקום Filenumber, רשום את מספר הקובץ, שאותו ציינת בפתיחה (כולל סימן ה- #) במקום Variable, ציין שם של משתנה, שאליו תיכנס השורה מהקובץ * Input קוראת שורה אחת מהקובץ בכל פעם, פקודת ה Input הבאה, תקרא את השורה הבאה. שימוש ב Input לדוגמא: $Input #1,l במקרה הזה תיכנס השורה מתוך הקובץ שמספרו 1, למשתנה $l. בשלב זה או אחר צצה שאלה, כיצד לקרוא קובץ שלם, במידה ואנו לא יודעים את מספר השורות שבקובץ? בשביל זה אנו צריכים להשתמש בלולאת While, ובפונקציה (EOF (End Of File הלולאה תרוץ מספר פעמים בלתי מוגבל, עד שהקריאה מהקובץ תסתיים. התחביר עובד ככה: (While Not EOF(FileNumber הקריאה מהקובץ Wend דוגמה: (While Not Eof(1 $Input #1, l txt$ = txt$ + l$ + vbNewLine Wend זהו, גמרנו לקרוא מהקובץ, ועכשיו צריך לסגור אותו הסגירה מתבצעת באמצעות הפקודה Close. תחביר: Close FileNumber * אם תרשום Close בלי לציין מספר קובץ, הפקודה תסגור את כל הקבצים הפתוחים כרגע בתוכנה שלך, כך שאם אתה סוגר את כל הקבצים ביחד, אינך צריך לציין את המספר בפקודה Close - - - זהו! זוהי הדרך בה קוראים מקבצים ב VB. היא נראית מבלבלת בהתחלה, אך לאחר מספר פעמים, היא נהיית דבר טבעי ופשוט. אם יש אי אילו בעיות, אשמח לעזור.
 

.עמית

New member
לארז, אחה"צ טובים !

ראשית, ברצוני להודות לך על עזרתך. הצלחתי, בסופו של דבר, לכתוב פונקציה שמקבלת מחרוזת ומחזירה את שבעת המשתנים. כעת, כל שנותר הוא לכתוב את הפרוצדורה, שפותחת את הקובץ, קוראת שורה שורה, ומעבירה אותה לפונקציה (כדי שתחזיר את המשתנים, למערך). כפי שכבר סיפרתי לך, שם הקובץ אינו ידוע, בתחילה. שם הקובץ מוזן ע"י המשתמש לתיבת TextBox הקרויה Text1. אשמח, באם תסייע לי בפקודות ש"פותחות" את הקובץ. כיצד עליי לפנות לשורה הראשונה ? ולשנייה ? אדגיש (שנית), ששם הקובץ מופיע ב- textBox ששמו Text1. ודבר נוסף, ברשותך: לאחר שהמשתמש הזין את שם הקובץ (ב- textbox), אני מעוניין שהפונקציה ששמה "Call File" תופעל, כאשר המשתמש לוחץ על מקש ה- Enter (במקלדת). ידוע לי שעליי לתכנת את ה- KeyPress של ה- TextBox. ולכן, אשאל, כיצד אני פונה למקש ה- Enter ? תודתי נתונה לך, על עזרתך.
 

.עמית

New member
ל- Cald, תודה רבה !

ללא ספק, התרשמתי עמוקות מתשובתך. כעת, העניין בהיר לי לגמרי, ואוכל לגשת למלאכה. כאיש תכנה, מתי לטעמך יש למקם פרוצדורות\פונקציות במודול, ומתי בלב הטופס (Form) ? האם הכל שאלה של לוקאלי\גלובאלי ? ושאלה נוספת, ברשותך: נאמר לי, שבאפשרות הטופס לקרוא לכל הפרוצדורות\פונקציות\משתנים אשר במודול. האם אכן כך ? ושוב, ברצוני לנצל את ההזדמנות ולהודות לך על אדיבותך. עמית.
 

cald

New member
תלוי...

אין חוקים מוגדרים, ולכן מתוכנה לתוכנה הדבר משתנה. אבל בכל זאת, אנסה לפרט כיצד אני משתמש. אך דבר ראשון, בקשר לשאלתך על החלקים שאפשר לקרוא מהמודול. כל פונקציה הקימת במודול ניתן לקרוא מכל Form, אלא אם הפונקציה הוגדרה כפונקציה פרטית. הגדרה של פונקציה פרטית: ()Private Sub Example End Sub בקשר למשתנים, לא ניתן לקרוא את המשתנים ישירות מהמודול, אך ניתן לכתוב פונקציות אשר יכצבו למשתנים / יחזירו את ערך המשתנים. לדוגמה, אם הגדרת משתנה A, תוכל להשתמש בו אם תגדיר פונקציות דומות: (Public Sub SetA(Value A=Value End Sub ()Public Funtion GetA GetA=A End Function - - - בקשר לשימוש במודולות. השימוש העיקרי שלי במודולות הוא כאשר אני כותב פונקציות אשר לא משמשות Form אחד בלבד. זאת אומרת, שאף מאפיין שהפונקציה משתמשת בו, לא יחודי לפורם הזה. כך אוכל להשתמש בפונקציות לכל מטרה, וכמו כן, לתוכניות אחרות שאבנה. דבר נוסף אשר בו תלוי השיקול, הוא גודל התוכנה, לא מבחינת מקום, אלא גודל העבודה. אם הפונקציות שאני כותב מבצעות פעולות קטנות ופשוטות, הקשורות בעיקר לתוכנה הספציפית הזאת, אכתוב אותם בגוף הפורם. אך אם אני עושה פרויקט גדול, התכנות יהיה מסודר ונוח בהרבה, אם אחלק את הפונקציות לפי מודולות הדואגות לכל אגף בתוכנה. אך בסופו של דבר, כל אחד מוצא את השימוש שהכי מתאים לו במודולות, והדבר משתנה מאדם לאדם, ומתוכנה לתוכנה. מקקוה שעניתי על שאלתך
 

eyalk5

New member
תשובה

הרבה יותר טוב למקם אותם במודל, ככה רק שפונים לפרוצדורה היא תופסת משאבים. (כנ"ל לגבי function) אין לי מושג בקשר לשאלה השנייה אייל ק
 

מי זה?

New member
לגבי השאלה השנייה

כן, אם כללת ב- PACKAGE שלך את המודול(כלומר, אם הוספת את המודול לפרוייקט), תוכל לקרוא לכל פונקצייה/ פרוצדורה ממנו. אגב, לדעתי עדיף להשתמש כמעט תמיד בפונקציות הממוקמות במודול, ולתת למודול שם משמעותי. בתכנית הבאה שתכין, אפשרי שתרצה להשתמש בפונקציות שבנית- גישה ישירה למודול המכיל את הפונקציה תעזור לך. בהצלחה וגמר חתימה טובה!!!
 
למעלה