دلفي و الملفات النصية
#1
[indent]
السلام عليكم ورحمة الله وبركاته ،
احتجت في برنامجي التعامل مع ملف نصي فقلت لماذا لا أفرد له موضوعا خاصا لعل الإخوة يستفيدون منه Smile

لنفرض أن الملف المراد التعامل معه هو ملف نصي Text

1- تعريف المتغير ملف نصي:
للتعامل مع الملف النصي لابد من تعريفه داخل البرنامج .
كود :
var F:textfile ;

2- تعيين الملف داخل القرص الصلب :
كود :
assignfile(F,'C:\MyFolder\MyFile.txt');

وذلك إذا فرضنا وجود الملف MyFile.txt داخل مجلد C:\MyFolder.
أما إذا استعملنا openDialog للبحث عن الملف النصي :
كود :
if opendialog.execute then assignfile(F,opendialog.filename);

3- قراءة الملف النصي:

طبعا على فرض أن الملف النصي موجود فعلا على القرص الصلب ،

1-3 - تهيئة الملف النصي للقراءة من بداية الملف ، ببساطة نستعمل الكود التالي :
كود :
reset(F);


2-3- لقراءة الملف النصي نستعمل متغير من نوع نص String و نحفظ المعلومات داخل Memo .

كود :
Lig : string ; while not eof(F) do begin readln(F,lig); memo.lines.add(lig); end; closefile(F);

شرح الكود :
*
كود :
while not eof(F) do
استعملنا حلقة while لقراءة الملف من البداية حتى النهاية EOF تعني End Of File

*
كود :
readln(F,lig);
: نقوم بقراءة السطر و ارفاقه داخل المتغير النصي Lig ثم ننتقل إلى السطر الثاني.

*
كود :
memo.lines.add(lig);
ندخل محتوى المتغير lig داخل memo.

*
كود :
closefile(F);
نقوم بغلق الملف.

الكتابة داخل الملف النصي :

للكتابة داخل الملف النصي هناك إجرائين مهمين :
1- الإجراء
كود :
rewrite()
هذا الإجراء يقوم بحذف الملف من القرص الصلب إن كان موجودا و إعادة تنشئته من جديد (لا بد من الحذر إذن)

2- الإجراء

كود :
append()

يقوم ببساطة إصافة المعلومات داخل الملف بشرط أن يكون الملف موجود حقيقة داخل القرص الصلب.

إذن للكتابة في الملف النصي :
كود :
rewrite(F); for I := 1 to memo.lines.count do begin lig := memo.lines[I]; writeln(F,lig) end; closefile(F);

أو (على حسب إختيارك)

كود :
append(F); for I := 1 to memo.lines.count do begin lig := memo.lines[I]; writeln(F,lig) end; closefile(F);

هذا ما تيسر لي جمعه و أسأل الله تعالى أن ينفع به. Cool
[/indent]
اللهم اجعلني من أهل القرآن ، الذين هم أهلك و خاصتك.
تذكر بأن الوقت الذي تلهو فيه ، غيرك يبني مجده فيه.
الرد
#2
تسلم اخى الكريم
الرد
#3
جزاك الله خيرا على الشرح الممتع...
الرد
#4
الف الف شكر اخى الغالى
الرد
#5
شكرا اخى الكريم على الاكواد
ولكنك نسيت ان تقوم بتحديد الملف فى عملية Rewrire , Append
'AssignFile(F,'c:\ss.text); امر التحديد

عموما فمت بتجميع اكوادك فى تطبيق بسيط فى المرفقات


الملفات المرفقة
.rar   delphi read and write to txt file.rar (الحجم : 1.53 ك ب / التحميلات : 106)
قطرة الماء تثقب الحجر ...لا بالعنف و لكن بتكرار المحاولة
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم