Difference between revisions of "File Handling In Pascal/ar"

From Free Pascal wiki
Jump to navigationJump to search
m (Fixed syntax highlighting)
 
(3 intermediate revisions by one other user not shown)
Line 9: Line 9:
 
يمكنك انشاء نوعك الخاص من الملفات لحفظ نوع معين من البيانات :لتخزين الارقام فقط. هذا الملف يستخدم لحفظ ذلك النوع فقط مثال:
 
يمكنك انشاء نوعك الخاص من الملفات لحفظ نوع معين من البيانات :لتخزين الارقام فقط. هذا الملف يستخدم لحفظ ذلك النوع فقط مثال:
 
<div dir="rtl" style="text-align: left;">
 
<div dir="rtl" style="text-align: left;">
<syntaxhighlight>...
+
<syntaxhighlight lang=pascal>...
 
type
 
type
 
   TIntegerFile  = file of integer;  // يسمح لك فقط بكتابة ارقام Integer في الملف
 
   TIntegerFile  = file of integer;  // يسمح لك فقط بكتابة ارقام Integer في الملف
Line 17: Line 17:
 
//يمكن ايضا انشاء ملف من نوع سجل  
 
//يمكن ايضا انشاء ملف من نوع سجل  
 
TCostumer = record
 
TCostumer = record
     CostumerName: string;
+
     CostumerName: string[255];
 
     CostumerID: Integer;
 
     CostumerID: Integer;
 
end;
 
end;
TCharFile     = file of TCostumer;  
+
TCostumerFile     = file of TCostumer;  
 
</syntaxhighlight>
 
</syntaxhighlight>
 
<div dir="rtl" style="text-align: right;">
 
<div dir="rtl" style="text-align: right;">
Line 26: Line 26:
 
== التعامل مع اخطاء الادخال و الاخراج ==
 
== التعامل مع اخطاء الادخال و الاخراج ==
 
العلم[http://www.freepascal.org/docs-html/prog/progsu38.html#x45-440001.2.38 I/O error handling flag]يخبر المصنف(compiler) بطريقة التعام مع الاخطاء اما برفع استثناء او حفظ النتيجة في اللمتغير IOResult
 
العلم[http://www.freepascal.org/docs-html/prog/progsu38.html#x45-440001.2.38 I/O error handling flag]يخبر المصنف(compiler) بطريقة التعام مع الاخطاء اما برفع استثناء او حفظ النتيجة في اللمتغير IOResult
<syntaxhighlight>{$I+} // الاخطاء ستقوم برفعه استثناء(الافتراضي)
+
<div dir="rtl" style="text-align: left;">
 +
<syntaxhighlight lang=pascal>{$I+} // الاخطاء ستقوم برفع استثناء(الافتراضي)
 
{$I-} //IOResult يتم وضع الخطأ في المتغير
 
{$I-} //IOResult يتم وضع الخطأ في المتغير
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
<div dir="rtl" style="text-align: right;">
 +
 +
== اجراءات الملفات ==
 +
اجلراءات ودوال التعامل مع الملفات التاية موجودة في الوحدة System.
 +
يمكنك الذهاب الى الوثائق للمزيد من المعلومات [http://www.freepascal.org/docs-html/rtl/system/index-5.html Reference for 'System' unit].
 +
* '''AssignFile''' تحديد اسم الملف
 +
* '''Append''' فتح ملف موجود للاضافة اليه
 +
* '''BlockRead''' -  قراءة معلوات من ملف غير محدد النوع الى الذاكرة
 +
* '''BlockWrite''' - كتابة معلومات من الذاكرة الى ملف غير محدد النوع
 +
* '''CloseFile''' اغلاق الملف
 +
* '''EOF''' - فحص نهاية الملف
 +
* '''Erase''' - حذف ملف من القرص
 +
* '''FilePos'''
 +
* '''FileSize''' - هذه الدالة تعطي حجم الملف
 +
* '''Flush''' -
 +
* '''IOResult''' - نتيج اخر عملية ادخال او اخراج
 +
* '''Read''' - القراءة من ملف
 +
* '''ReadLn''' - قراءة سطر من الملف
 +
* '''Reset''' - فغتح ملف للقراءة
 +
* '''Rewrite''' - انشاء ملف للكتابة
 +
* '''Seek''' - تغير المكان(مكان القراءة او الكتابة)في الملف
 +
* '''SeekEOF''' - الذهاب الى نهاية الملف
 +
* '''SeekEOLn''' - الذهاب الى نهاية السطر
 +
* '''Truncate''' -
 +
* '''Write''' - كتابة متغير في الملف
 +
* '''WriteLn''' - كتابة متغير في ملف نصي والذهاب الى ملف جديد
 +
 +
== مثال ==
 +
مثال لملف نصي TextFile
 +
<div dir="rtl" style="text-align: left;">
 +
<syntaxhighlight lang=pascal>program CreateFile;
 +
 +
uses
 +
Sysutils;
 +
 +
const
 +
  C_FNAME = 'textfile.txt';
 +
 +
var
 +
  tfOut: TextFile;
 +
 +
begin
 +
  // Set the name of the file that will be created
 +
  AssignFile(tfOut, C_FNAME);
 +
 +
  // Use exceptions to catch errors (this is the default so not absolutely requried)
 +
  {$I+}
 +
 +
  // Embed the file creation in a try/except block to handle errors gracefully
 +
  try
 +
    // Create the file, write some text and close it.
 +
    rewrite(tfOut);
 +
 +
    writeln(tfOut, 'Hello textfile!');
 +
    writeln(tfOut, 'The answer to life, the universe and everything: ', 42);
 +
 +
    CloseFile(tfOut);
 +
 +
  except
 +
    // If there was an error the reason can be found here
 +
    on E: EInOutError do
 +
      writeln('File handling error occurred. Details: ', E.ClassName, '/', E.Message);
 +
  end;
 +
 +
  // Give feedback and wait for key press
 +
  writeln('File ', C_FNAME, ' created if all went ok. Press Enter to stop.');
 +
  readln;
 +
end.</syntaxhighlight>

Latest revision as of 00:15, 15 February 2020

العربية (ar) English (en) español (es) suomi (fi) français (fr) 日本語 (ja) русский (ru) 中文(中国大陆)‎ (zh_CN) 中文(台灣)‎ (zh_TW)

نظرة عامة

يجب ان يتعلم جميع المبرمجين كيفية التعامل مع الملفات.تستخدم الملفات لحفظ المعلومات بحيث يمكن استرجاعها مرة اخرى

الطريقة الهيكلية القديمة

عند التعامل مع الملفات بطريق هيكلية (غير شيئية) يمكن تحديد نوع الملف حسب المحتويات التي نرغب بتخزينها( او المخزنة مسبقا) في الملف مثلا للنصوص نستخدم TextFile والذي يقوم بحفظ النص بشكل اسطر كل سطر ينتهي بعلامة انتهاء السطر(LineEnding). يمكنك حفظ مقاطع نصية (String)في هذا النوع من الملفات كما يمكن حفظ الارقام ايضا بعد تحوليها الى String. يمكنك انشاء نوعك الخاص من الملفات لحفظ نوع معين من البيانات :لتخزين الارقام فقط. هذا الملف يستخدم لحفظ ذلك النوع فقط مثال:

...
type
  TIntegerFile  = file of integer;  // يسمح لك فقط بكتابة ارقام Integer في الملف
  TExtendedFile = file of extended; // يسمح لك فقط بكتابة ارقام extended في الملف
  TCharFile     = file of char;     //  يسمح لك فقط بكتابة حروف منفردة char في الملف 

//يمكن ايضا انشاء ملف من نوع سجل 
TCostumer = record
    CostumerName: string[255];
    CostumerID: Integer;
end;
TCostumerFile     = file of TCostumer;

التعامل مع اخطاء الادخال و الاخراج

العلمI/O error handling flagيخبر المصنف(compiler) بطريقة التعام مع الاخطاء اما برفع استثناء او حفظ النتيجة في اللمتغير IOResult

{$I+} // الاخطاء ستقوم برفع استثناء(الافتراضي)
{$I-} //IOResult يتم وضع الخطأ في المتغير

اجراءات الملفات

اجلراءات ودوال التعامل مع الملفات التاية موجودة في الوحدة System. يمكنك الذهاب الى الوثائق للمزيد من المعلومات Reference for 'System' unit.

  • AssignFile تحديد اسم الملف
  • Append فتح ملف موجود للاضافة اليه
  • BlockRead - قراءة معلوات من ملف غير محدد النوع الى الذاكرة
  • BlockWrite - كتابة معلومات من الذاكرة الى ملف غير محدد النوع
  • CloseFile اغلاق الملف
  • EOF - فحص نهاية الملف
  • Erase - حذف ملف من القرص
  • FilePos
  • FileSize - هذه الدالة تعطي حجم الملف
  • Flush -
  • IOResult - نتيج اخر عملية ادخال او اخراج
  • Read - القراءة من ملف
  • ReadLn - قراءة سطر من الملف
  • Reset - فغتح ملف للقراءة
  • Rewrite - انشاء ملف للكتابة
  • Seek - تغير المكان(مكان القراءة او الكتابة)في الملف
  • SeekEOF - الذهاب الى نهاية الملف
  • SeekEOLn - الذهاب الى نهاية السطر
  • Truncate -
  • Write - كتابة متغير في الملف
  • WriteLn - كتابة متغير في ملف نصي والذهاب الى ملف جديد

مثال

مثال لملف نصي TextFile

program CreateFile;

uses
 Sysutils;

const
  C_FNAME = 'textfile.txt';

var
  tfOut: TextFile;

begin
  // Set the name of the file that will be created
  AssignFile(tfOut, C_FNAME);

  // Use exceptions to catch errors (this is the default so not absolutely requried)
  {$I+}

  // Embed the file creation in a try/except block to handle errors gracefully
  try
    // Create the file, write some text and close it.
    rewrite(tfOut);

    writeln(tfOut, 'Hello textfile!');
    writeln(tfOut, 'The answer to life, the universe and everything: ', 42);

    CloseFile(tfOut);

  except
    // If there was an error the reason can be found here
    on E: EInOutError do
      writeln('File handling error occurred. Details: ', E.ClassName, '/', E.Message);
  end;

  // Give feedback and wait for key press
  writeln('File ', C_FNAME, ' created if all went ok. Press Enter to stop.');
  readln;
end.