ثلاثة أنواع من الملفات تستخدم للقراءة والكتابة (I/O) في دلفي
1. نوع ملف باسكال القديم
أنواع الملفات الممثلة بمتغيرات الملفات القديمة، مثل F:text، F:File تم تحديد ثلاث فئات: النوع المكتوب، وغير المكتوب، ونوع الحرف وبعض وظائف تشغيل ملف دلفي على سبيل المثال: AssignPRn، وWriteln، وفئات الملفات هذه تشبه Windows مقبض الملف غير متوافق
2. مقبض ملف Windows (المقبض)
يقوم مقبض ملف Pascal الموجه للكائنات بتغليف نوع مقبض ملف Windows، وتغلف مكتبة وظيفة تشغيل الملف وظيفة Windows API. على سبيل المثال، يستدعي "Fileread" وظيفة Windows API "ReadFile". إذا كنت على دراية بـ Windows API، فيمكنك استخدام بيانات ملفات Windows لإجراء عمليات الملف.
3. تدفقات الملف
دفق الملف هو مثيل كائن لفئة TFileStream. دفق الملف هو نوع عملية ملف عالي المستوى. يمكن استخدام هذه السمة لتشغيل أنواع مؤشرات ملفات Windows.
كيفية اختيار نوع الملف
مقبض ملف Windows هو نوع تشغيل ملف ذو مستوى أدنى يوفر تحكمًا مرنًا في القراءة والكتابة للملفات المتزامنة وغير المتزامنة، فيما يلي وصف رمز زائف لمزامنة الملفات والتشغيل غير المتزامن باستخدام نوع مقبض ملفات Windows:
العمليات المتزامنة:
bResult = ReadFile(hFile, &inBuffer, nBytesToRead, &nBytesRead, NULL);
// التحقق من وجود eof
إذا (bResult && nBytesRead == 0, ) {
// نحن في نهاية الملف
}
العمليات غير المتزامنة:
// قم بإعداد حقول البنية المتداخلة
gOverLapped.Offset = 0;
gOverLapped.OffsetHigh = 0;
gOverLapped.hEvent = NULL;
// حاول إجراء عملية قراءة غير متزامنة
bResult = ReadFile(hFile, &inBuffer, nBytesToRead, &nBytesRead,
&gمتداخل) ;
// إذا كانت هناك مشكلة، أو كانت العملية غير المتزامنة لا تزال معلقة ...
إذا (!بالنتيجة)
{
// التعامل مع رمز الخطأ
التبديل (dwError = GetLastError())
{
الحالة ERROR_HANDLE_EOF:
{
// وصلنا إلى نهاية الملف
// أثناء الاتصال بـ ReadFile
// رمز للتعامل مع ذلك
}
الحالة ERROR_IO_PENDING:
{
// الإدخال/الإخراج غير المتزامن لا يزال قيد التقدم
// افعل شيئًا آخر لفترة من الوقت
GoDoSomethingElse() ;
// التحقق من نتائج القراءة غير المتزامنة
bResult = GetOverlappedResult(hFile, &gOverlapped,
&nBytesRead, FALSE) ;
//إذا كانت هناك مشكلة...
إذا (!بالنتيجة)
{
// التعامل مع رمز الخطأ
التبديل (dwError = GetLastError())
{
الحالة ERROR_HANDLE_EOF:
{
// وصلنا إلى نهاية الملف
ملف أثناء عملية غير متزامنة
}
// التعامل مع حالات الخطأ الأخرى
}
}
} // حالة النهاية
// التعامل مع حالات الخطأ الأخرى
} // مفتاح النهاية
} // النهاية إذا
على الرغم من أن مقابض ملفات Windows توفر تحكمًا مرنًا في الملفات، إلا أنه يجب كتابة المزيد من التعليمات البرمجية لمعالجة الأخطاء.
إذا لم تكن على دراية بـ Windows API، فاستخدم نوع متغير الملف القديم الموصى به من قبل Delphi.
يستخدم نوع الملف القديم في دلفي AssignFile لربط متغيرات الملف بالملفات الفعلية، التي تحددها دلفي
عمليات مختلفة على متغيرات الملف لإكمال الوصول إلى الملف وتشغيله. ما يلي يوفر فئة متغير الملف
اكتب وصف رمز العملية:
فار
F: ملف نصي؛
S: سلسلة؛
يبدأ
إذا كان OpenDialog1.Execute ثم { عرض مربع الحوار المفتوح }
يبدأ
AssignFile(F, OpenDialog1.FileName); { تم تحديد الملف في مربع الحوار }
إعادة تعيين (F)؛
Readln(F, S); {اقرأ السطر الأول من الملف}
Edit1.Text := S; {ضع السلسلة في عنصر تحكم TEdit}
CloseFile(F);
نهاية؛
نهاية؛
يعد دفق الملف فئة فرعية من الدفق (فئات الدفق)، لذا فإن إحدى ميزات استخدامه هي أنه يمكنه وراثة خصائص فئته الأصلية تلقائيًا، ويمكنه التفاعل بسهولة مع فئات الدفق الأخرى، على سبيل المثال، إذا كنت تريد كتابة ملف ديناميكي كتلة الذاكرة الموجودة في القرص، يمكنك استخدام TFileStream وTMemoryStream لإكمالها.