ببساطة وضع الملف هو تسلسل ثنائي من نوع ما. في دلفي، هناك ثلاث فئات من ملف: كتبته ، والنص ، وغير نمط. الملفات المكتوبة هي ملفات تحتوي على بيانات من نوع معين ، مثل Double أو Integer أو نوع السجل المخصص المحدد مسبقًا. تحتوي الملفات النصية على أحرف ASCII قابلة للقراءة. يتم استخدام الملفات غير المطبوعة عندما نريد فرض بنية أقل ما يمكن على الملف.
الملفات المكتوبة
بينما تتكون الملفات النصية من سطور منتهية بـ CR / LF (#13#10) مزيج، تتكون الملفات المكتوبة من بيانات مأخوذة من نوع معين من بنية البيانات.
على سبيل المثال ، ينشئ التصريح التالي نوع سجل يسمى TMember ومجموعة من متغيرات سجل TMember.
اكتب
TMember = سجل
اسم: خيط[50];
البريد الإلكتروني:
خيط[30];
المشاركات: LongInt؛
النهاية;
فار أفراد: مجموعة مصفوفة[1..50] من TMember
قبل أن نتمكن من كتابة المعلومات على القرص ، يجب أن نعلن عن متغير من نوع الملف. السطر التالي من التعليمات البرمجية يعلن متغير ملف F.
فار F: ملف TMember
ملاحظة: لإنشاء ملف مكتوب في دلفي ، نستخدم ما يلي بناء الجملة:
فار SomeTypedFile: ملف بعض الانواع
يمكن أن يكون النوع الأساسي (SomeType) للملف نوعًا قياسيًا (مثل Double) أو نوع صفيف أو نوع سجل. يجب ألا تكون سلسلة طويلة أو صفيفًا ديناميكيًا أو فئة أو كائنًا أو مؤشرًا.
لبدء العمل مع الملفات من Delphi ، يتعين علينا ربط ملف على قرص بمتغير ملف في برنامجنا. لإنشاء هذا الرابط ، يجب علينا استخدام AssignFile الإجراء لربط ملف على قرص مع متغير ملف.
AssignFile (F ، 'Members.dat')
بمجرد إنشاء الارتباط مع ملف خارجي ، يجب فتح "متغير" الملف F لإعداده للقراءة والكتابة. نحن ندعو إجراء إعادة تعيين لفتح ملف موجود أو إعادة كتابة لإنشاء ملف جديد. عند اكتمال برنامج معالجة ملف ، يجب إغلاق الملف باستخدام الإجراء CloseFile. بعد إغلاق الملف ، يتم تحديث الملف الخارجي المرتبط به. يمكن عندئذٍ ربط متغير الملف بملف خارجي آخر.
بشكل عام ، يجب أن نستخدمها دائمًا معالجة الاستثناء; قد تنشأ العديد من الأخطاء عند العمل مع الملفات. على سبيل المثال: إذا قمنا باستدعاء CloseFile لملف مغلق بالفعل ، فإن Delphi يبلغ عن خطأ إدخال / إخراج. من ناحية أخرى ، إذا حاولنا إغلاق ملف ولكننا لم نسمي AssignFile بعد ، فإن النتائج لا يمكن التنبؤ بها.
الكتابة إلى ملف
افترض أننا ملأنا مجموعة من أعضاء دلفي بأسمائهم ورسائل البريد الإلكتروني وعدد المنشورات ، ونريد تخزين هذه المعلومات في ملف على القرص. سيتم تنفيذ الجزء التالي من التعليمات البرمجية:
فار
F: ملف TMember
i: عدد صحيح
ابدأ
AssignFile (F، 'members.dat')؛
أعد كتابة (F) ؛
محاولة
إلى عن على ي: = 1 إلى 50 فعل
اكتب (واو ، أعضاء [ي]) ؛
أخيرا
CloseFile (F) ؛
النهاية;النهاية;
قراءة من ملف
لاسترداد جميع المعلومات من ملف "members.dat" ، نستخدم ما يلي الشفرة:
فار
عضو: TMember
F: ملف TMemberابدأ
AssignFile (F، 'members.dat')؛
إعادة (F) ؛
محاولة
بينما لا Eof (F) هل تبدأ
قراءة (F ، عضو) ؛
{DoSomethingWithMember؛}
النهاية;
أخيرا
CloseFile (F) ؛
النهاية;النهاية;
ملحوظة: Eof هي وظيفة التحقق EndOfFile. نحن نستخدم هذه الوظيفة للتأكد من أننا لا نحاول القراءة بعد نهاية الملف (بعد آخر سجل مخزن).
تسعى وتحديد المواقع
عادة ما يتم الوصول إلى الملفات بالتسلسل. عند قراءة ملف باستخدام الإجراء القياسي قراءة أو كتابة باستخدام الإجراء القياسي Write ، ينتقل موضع الملف الحالي إلى مكون الملف التالي المرتب رقميًا (السجل التالي). يمكن أيضًا الوصول إلى الملفات المكتوبة بشكل عشوائي من خلال الإجراء القياسي Seek الذي ينقل موضع الملف الحالي إلى مكون محدد. ال FilePos و حجم الملف وظائف يمكن استخدامها لتحديد موقع الملف الحالي وحجم الملف الحالي.
{عد إلى البداية - السجل الأول}
See (F، 0)؛
{انتقل إلى السجل الخامس}
See (F، 5)؛
{الانتقال إلى النهاية - "بعد" السجل الأخير}
تسعى (F ، FileSize (F)) ؛
التغيير والتحديث
لقد تعلمت للتو كيفية كتابة وقراءة مجموعة كاملة من الأعضاء ، ولكن ماذا لو كان كل ما تريد القيام به هو البحث عن العضو العاشر وتغيير البريد الإلكتروني؟ الإجراء التالي يفعل بالضبط ما يلي:
إجراء تغيير البريد الالكتروني(مقدار ثابت RecN: عدد صحيح مقدار ثابت بريد إلكتروني جديد: خيط) ;فار DummyMember: TMember؛ابدأ
{تعيين ، فتح ، استثناء معالجة كتلة}
تسعى (واو ، RecN) ؛
قراءة (F ، DummyMember) ؛
دمية. البريد الإلكتروني: = NewEMail ؛
{قراءة ينتقل إلى السجل التالي ، علينا أن
ارجع إلى السجل الأصلي ، ثم اكتب}
تسعى (واو ، RecN) ؛
اكتب (F ، DummyMember) ؛
{إغلاق الملف}النهاية;
إكمال المهمة
هذا كل شيء - الآن لديك كل ما تحتاجه لإنجاز مهمتك. يمكنك كتابة معلومات الأعضاء على القرص ، ويمكنك قراءتها مرة أخرى ، ويمكنك حتى تغيير بعض البيانات (البريد الإلكتروني ، على سبيل المثال) في "وسط" الملف.
المهم هو أن هذا الملف ليس ملف أسكي، هذا كيف يبدو في المفكرة (سجل واحد فقط):
.Delph Guide g Ò5 · ¿ì. 5.. B V.Lƒ، „¨[email protected]Ï.. ç.ç.ï..