כל שעליך לעשות הוא לשים קובץ הוא רצף בינארי מסוג כלשהו. בתוך דלפי, יש שלוש שיעורים של קובץ: הקלדו, טקסטו ולא הוקלדו. קבצים שהוקלדו הם קבצים המכילים נתונים מסוג מסוים, כגון סוג כפול, מספר שלם או סוג רשומה מותאם אישית שהוגדר בעבר. קבצי טקסט מכילים תווי ASCII קריאים. משתמשים בקבצים שלא הוקלדו כאשר אנו רוצים לכפות את הקובץ הכי פחות אפשרי.
קבצים שהוקלדו
בעוד שקבצי טקסט מורכבים מקווים שמסתיימים ב- CR / LF (#13#10) שילוב, קבצים שהוקלדו מורכבים מנתונים שנלקחו מסוג מסוים של מבנה נתונים.
לדוגמה, ההצהרה הבאה יוצרת סוג רשומה הנקרא TMember ומערך של משתני רשומת TMember.
סוג
חבר = תקליט
שם: מחרוזת[50];
אימייל:
מחרוזת[30];
הודעות: LongInt;
סוף;
var חברים: מערך[1..50] של חבר;
לפני שנוכל לכתוב את המידע לדיסק, עלינו להכריז על משתנה מסוג קובץ. שורת הקוד הבאה מצהירה על משתנה של קובץ F.
var F: קובץ של חבר;
הערה: כדי ליצור קובץ שהוקלד בדלפי, אנו משתמשים בהמשך תחביר:
var SomeTypedFile: קובץ של סוג כלשהו
סוג הבסיס (SomeType) לקובץ יכול להיות סוג סקלרי (כמו כפול), סוג מערך או סוג רשומה. זה לא צריך להיות מחרוזת ארוכה, מערך דינמי, מחלקה, אובייקט או מצביע.
כדי להתחיל לעבוד עם קבצים מדלפי, עלינו לקשר קובץ בדיסק למשתנה קובץ בתוכנית שלנו. כדי ליצור קישור זה עלינו להשתמש AssignFile נוהל לשייך קובץ בדיסק למשתנה קובץ.
AssignFile (F, 'Members.dat')
לאחר הקמת הקשר עם קובץ חיצוני, יש לפתוח את משתנה הקובץ F כדי להכין אותו לקריאה וכתיבה. אנו קוראים להליך איפוס לפתיחת קובץ קיים או לשכתב כדי ליצור קובץ חדש. כאשר תוכנית מסיימת את עיבוד הקובץ, יש לסגור את הקובץ באמצעות נוהל CloseFile. לאחר סגירת הקובץ מעודכן הקובץ החיצוני המשויך אליו. לאחר מכן ניתן לשייך את משתנה הקובץ לקובץ חיצוני אחר.
באופן כללי, עלינו להשתמש תמיד טיפול בחריג; טעויות רבות עשויות להיווצר בעבודה עם קבצים. לדוגמא: אם אנו קוראים ל- CloseFile לקובץ שכבר סגור דלפי מדווחת על שגיאת קלט / פלט. מצד שני, אם ננסה לסגור קובץ אך טרם התקשרנו ל- AssignFile, התוצאות אינן צפויות.
כתוב לקובץ
נניח שמילאנו מערך של חברי דלפי בשמותיהם, הודעות הדואר האלקטרוני ומספר הפוסטים שלהם ואנחנו רוצים לאחסן מידע זה בקובץ בדיסק. פיסת הקוד הבאה תעשה את העבודה:
var
F: קובץ של חבר;
i: מספר שלם;
התחל
AssignFile (F, 'members.dat');
לשכתב (ו);
נסה
ל j: = 1 ל 50 לעשות
כתוב (F, חברים [j]);
סוף סוף
CloseFile (F);
סוף;סוף;
קרא מקובץ
כדי לאחזר את כל המידע מקובץ 'members.dat' נשתמש בהמשך קוד:
var
חבר: TMember
F: קובץ של חבר;התחל
AssignFile (F, 'members.dat');
איפוס (F);
נסה
בזמן שלא Eof (F) אכן מתחילים
קרא (F, חבר);
{DoSomethingWithMember;}
סוף;
סוף סוף
CloseFile (F);
סוף;סוף;
הערה: Eof היא פונקציית בדיקת EndOfFile. אנו משתמשים בפונקציה זו כדי לוודא שאיננו מנסים לקרוא מעבר לסוף הקובץ (מעבר לרשומה האחרונה המאוחסנת).
מחפש ומיצוב
בדרך כלל ניגשים לקבצים ברצף. כשקוראים קובץ באמצעות הנוהל הרגיל נקרא או נכתב באמצעות הנוהל הרגיל כתוב, מיקום הקובץ הנוכחי עובר לרכיב הקובץ הבא המסודר (הרשומה הבאה). ניתן לגשת לקבצים המוקלדים גם באופן אקראי באמצעות ההליך הסטנדרטי Seek, שמעביר את מיקום הקובץ הנוכחי לרכיב שצוין. ה FilePos ו גודל הקובץ ניתן להשתמש בפונקציות לקביעת מיקום הקובץ הנוכחי וגודל הקובץ הנוכחי.
{חזור להתחלה - הרשומה הראשונה}
חפש (F, 0);
{עבור לרשומה החמישית}
לחפש (F, 5);
{קפוץ לסוף - "אחרי" הרשומה האחרונה}
חפש (F, FileSize (F));
שנה ועדכן
בדיוק למדת איך לכתוב ולקרוא את כל מערך החברים, אבל מה אם כל מה שאתה רוצה לעשות זה לפנות לחבר העשירי ולשנות את הדואר האלקטרוני? הנוהל הבא עושה בדיוק את זה:
תהליך שנה כתובת אימייל(const RecN: מספר שלם; const מייל חדש: מחרוזת) ;var DummyMember: TMember;התחל
{להקצות, לפתוח, חסימה לטיפול בחריגות}
חפש (F, RecN);
קרא (F, DummyMember);
DummyMember. אימייל: = דואר אלקטרוני חדש;
{לקרוא מעברים לתקליט הבא, עלינו לעשות זאת
חזור לרשומה המקורית, ואז כתוב}
חפש (F, RecN);
כתוב (F, DummyMember);
{סגור קובץ}סוף;
השלמת המשימה
זהו זה - עכשיו יש לך את כל מה שאתה צריך כדי לבצע את המשימה שלך. אתה יכול לכתוב את פרטי החברים לדיסק, אתה יכול לקרוא אותם בחזרה, ואפשר אפילו לשנות חלק מהנתונים (דואר אלקטרוני, למשל) ב"אמצע "הקובץ.
מה שחשוב הוא שקובץ זה אינו קובץ קובץ ASCII, ככה זה נראה פנימה פנקס רשימות (רק רשומה אחת):
מדריך דלפי ז 5 · ¿ì. 5.. B V.Lƒ, „¨[email protected]Ï.. ç.ç.ï..