التعامل مع الملفات Read And Write
إن شاء الله اليوم راح نأخذ مجموعة من الدوال للتعامل مع الملفات
نبدأ مع قرأة الملفات
FileRead
الصيغة العامة :
كود:
[COLOR=Navy][I]FileRead [/I][/COLOR][COLOR=Red]([/COLOR] [COLOR=Silver]"filehandle/filename"[/COLOR][COLOR=Red] [,[/COLOR] count[COLOR=Red]] )[/COLOR]
filehandle/filename:
filename: إسم الملف ومساره
أو
filehandle: مقبض أو مؤشر الملف في الذاكرة راح نفصله في الجزء الثاني للدرس ..
count /عدد الحروف الي تريد قرأتها من الملف
الافتراضي .. جميع الاحرف في الملف
القيم الراجعه للدالة /
في حالة النجاح : ترجع جميع بيانات الملف سواء كانت نص / binary
وأيضاًُ يحمل الماكرو
extended@ عدد الاحرف في الملف / عدد البايتات
حالة خاصة : في حالة قرأه الملف إلى الاخير يحمل
error@ القيمة -1
في حالة الخطأ : يحمل الماكرو
Error@ القيمة 1 /والخطأ يعني الملف غير قابل للقرأه - أو ليس في وضع
القرأه
مثال (1)
كود:
[COLOR=DarkRed]$text[/COLOR] [COLOR=Red]=[/COLOR] [COLOR=Navy][I]FileRead[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Silver]"1.txt"[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]if[/COLOR] [COLOR=Magenta]@error[/COLOR] [COLOR=Red]=[/COLOR] 1 [COLOR=Blue]then[/COLOR]
[COLOR=Navy][I]MsgBox[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Indigo]16[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"لايمكن فتح الملف للقرأه"[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]Else[/COLOR]
[COLOR=Navy][I]MsgBox[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Red],[/COLOR][COLOR=DarkRed]$text [/COLOR][COLOR=Red]&[/COLOR] [COLOR=Magenta]@crlf[/COLOR] [COLOR=Red]&[/COLOR][COLOR=Silver] "عدد الاحرف :" [/COLOR][COLOR=Red]&[/COLOR] [COLOR=Magenta]@extended[/COLOR] [COLOR=Red])[/COLOR]
[COLOR=Blue]endif[/COLOR]
في الملف 1.txt كتبنا نص بسيط فمن غير الممكن إستخدام msgbox
للملفات الكبيرة الهدف هو إيضاح الفكرة
زي ماشفنا القيمة الراجعه للدالة هي النص الموجود في الملف وهذا يعني
إننا نقدر نتعامل معه بدوال النصوص أخذنا وحده منها وسوف يكون لنا وقفه مع البقية إن شاء الله
سوف نستخدم الدالة
StringInStr
مثال (2)
كود:
[COLOR=DarkRed]$path[/COLOR] = [COLOR=Magenta]@SystemDir[/COLOR] [COLOR=Red]&[/COLOR][COLOR=Silver]"\drivers\etc\hosts"[/COLOR]
[COLOR=DarkRed]$text[/COLOR] [COLOR=Red]=[/COLOR] [I][COLOR=Navy]Fileread[/COLOR][/I][COLOR=Red]([/COLOR][COLOR=DarkRed]$path[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]if[/COLOR] [COLOR=Magenta]@error[/COLOR] [COLOR=Red]=[/COLOR] 1 [COLOR=Blue]Then[/COLOR]
[I][COLOR=Navy]MsgBox[/COLOR][/I][COLOR=Red]([/COLOR][COLOR=Indigo]16[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"لايكمن فتح الملف للقرأة"[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]Else[/COLOR]
[COLOR=DarkRed]$sarch[/COLOR] [COLOR=Red]= [/COLOR][COLOR=Navy][I]StringInStr[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=DarkRed]$text[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"www.zyzoom.org/vb"[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]if[/COLOR] [COLOR=DarkRed]$sarch[/COLOR][COLOR=Red] <>[/COLOR] 0 [COLOR=Blue]then[/COLOR]
[COLOR=Navy][I]MsgBox[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Indigo]16[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"الموقع محجوب"[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]Else[/COLOR]
[COLOR=Navy][I]MsgBox[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[COLOR=Red],[/COLOR]"الموقع ليس محجوب لديك"[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]endif[/COLOR]
[COLOR=Blue]endif[/COLOR]
التحقق هل منتدى زيزووم محجوب من ملف الهوست
FileReadLine
هي تقرأء سطر واحد في الملف تحدد /عند عدم التحديد يقرأ السطر الاول
الصيغة العامة للدالة
كود:
[COLOR=Navy][I]FileReadLine[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Silver] "filehandle/filename"[/COLOR][COLOR=Red] [,[/COLOR] line[COLOR=Red]] )[/COLOR]
filename: إسم الملف ومساره
أو
filehandle: مقبض أو مؤشر الملف في الذاكرة ..
line :
رقم السطر المراد قرأته يبدء العد من 1
ولقرأه أخر سطر بالتحديد ضع -1
القيم الراجعه
في حالة النجاح : ترجع الدالة بالسطر
حالة خاصة : عند قرأة السطر الاخير أي وضعت -1 في الوسيطات الماكرو
error@ يحمل القيمة -1
في حالة الفشل :يحمل الماكرو
error@ 1 /والخطأ يعني الملف غير قابل للقرأة - أو ليس في وضع القرأة
مثال
كود:
[COLOR=DarkRed]$line[/COLOR][COLOR=Red]=[/COLOR] [COLOR=Navy][I]FileReadLine [/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Silver] "1.txt"[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]if[/COLOR] [COLOR=Magenta]@error[/COLOR] [COLOR=Red]<>[/COLOR] [COLOR=Indigo]1[/COLOR] [COLOR=Blue]then[/COLOR]
[COLOR=Navy][I]MsgBox[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]""[/COLOR][COLOR=DarkRed][COLOR=Red],[/COLOR]$line[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]endif[/COLOR]
FileWrite
الدالة هذي تقوم بكتابة نص في ملف ... إذا لم يكن الملف موجود سيتم إنشائه
إذاكان موجود يتم الكتابة بعد آخر حرف في الملف
كود:
[COLOR=Navy][I]FileWrite[/I][/COLOR][COLOR=Red]([/COLOR] [COLOR=Silver]"filehandle/filename"[/COLOR][COLOR=Red],[/COLOR] [COLOR=Silver]"text/data"[/COLOR] [COLOR=Red])[/COLOR]
filehandle/filename :
filename: إسم الملف ومساره
أو
filehandle: مقبض أو مؤشر الملف في الذاكرة ..
text/data : البيانات المراد إضافتها سواء كانت نص / Binary
القيمة الراجعه للدالة :
في حالة النجاح : 1
في حالة الفشل : 0 / يعني الملف غير قابل للكتابة - أو ليس في وضع الكتابة .
مثال
كود:
[COLOR=Blue]if[/COLOR] [COLOR=Navy][I]FileWrite[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Silver]"2.txt"[/COLOR][COLOR=Red],[/COLOR][COLOR=Silver]"Welcome"[/COLOR][COLOR=Red])[/COLOR] [COLOR=Blue]Then[/COLOR]
[COLOR=Navy][I]MsgBox[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=Indigo]0[/COLOR],[COLOR=Silver]""[/COLOR],[COLOR=Silver]"تمت إضافة النص للملف"[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Blue]endif[/COLOR]
FileWriteLine
الصيغة العامة :
كود:
[COLOR=Navy][I]FileWriteLine [/I][/COLOR][COLOR=Red]([/COLOR] [COLOR=Silver]"filehandle/filename"[/COLOR][COLOR=Red],[/COLOR] [COLOR=Silver]"line"[/COLOR] [COLOR=Red])[/COLOR]
line : السطر المراد كتابته في الملف.
شبية جدأ بالدالة السابقة - ونفس القيم والراجعه
بالنسبة للفروق .. الفرق هنا إن الدالة بعد كتابة النص تنزل سطر في الملف
أي تضيف
crlf@ بعد النص بشكل تلقائي ..
مع الامثلة بتوضح الفروق أكثر ..
نستخدم الدالة الاولى ..
كود:
[COLOR=DarkRed]$file[/COLOR][COLOR=Red] =[/COLOR] [COLOR=Silver]"test.txt"[/COLOR]
[COLOR=Navy][I]FileWrite[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=DarkRed]$file[/COLOR][COLOR=Red] ,[/COLOR] [COLOR=Silver]"Waget "[/COLOR][COLOR=Red])[/COLOR]
[COLOR=Navy][I]FileWrite[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=DarkRed]$file[/COLOR] [COLOR=Red],[/COLOR] [COLOR=Silver]"zyzoom.org"[/COLOR][COLOR=Red])[/COLOR]
لو فتحنا الملف بالnotepad نلقاه بهذي الصورة
طيب نستخد بالاول الدالة الثانية ...
كود:
[COLOR=DarkRed]$file [/COLOR][COLOR=Red]=[/COLOR] [COLOR=Silver]"test.txt"[/COLOR]
[COLOR=Navy][I]FileWriteline[/I][/COLOR][COLOR=Red]([/COLOR][COLOR=DarkRed]$file [/COLOR][COLOR=Red],[/COLOR] [COLOR=Silver]"Waget "[/COLOR][COLOR=Red])[/COLOR]
[I][COLOR=Navy]FileWrite[/COLOR][/I][COLOR=Red]([/COLOR][COLOR=DarkRed]$file[/COLOR][COLOR=Red] ,[/COLOR] [COLOR=Silver]"zyzoom.org"[/COLOR][COLOR=Red])[/COLOR]
كتب الكلمة ونزل سطر وإستخدمنا الدالة
filewrite . وهي تكمل عند ماتوقف في السطر الجديد
لو إستخدمنا
crlf@ في الدالة
filewrite راح تكون مكافئة للدلة
filewriteline
إيضاحات
بالنسبة ل[ الملف غير قابل للقرأة - أو ليس في وضع القرأة]
وأيضاً [الملف غير قابل للكتابة - أو ليس في وضع الكتابة] .
ألي يهمنا في هذا الدرس .. وهو عدم قابلية الكتابة أوالقرأة
لإنك لو إستخدمت الطريقة الموضحة بالدرس لن يأتيك غير هذا الخطأ
وحلة برمجياُ بإستخدام
بالنسبة لوضع القرأة والكتابة راح نتكلم عنها بالدرس القادم ...
الطريقة المشروحة هي أبسط طريقة لتحرير الملفات .. فأنت هنا لا تحتاج لتحديد الترميز
عند القرأة أو الكتابة الاتوات تتكفل بذالك .. لكن هذي الطريقة بطيئة مع الملفات الكبيرة
الدرس القادم يشرح الطريقة المتقدمة للتعامل مع الملفات :kmj-by0000 (72):
:d: