الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

التعامل مع وسائط التخزين البسيطة

مغلق
بدأه Bibo2002 في 19 يناير 2003 · 6 رد · 577 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

هناك العديد من المشاريع التي تحتاج لتخزين بعض البيانات البسيطة على القرص الصلب ... فمثلا في الألعاب أنت تحتاج لحفظ اعدادات المستخدم ... أو الخيارات Options أو غير ذلك من البيانات الكبيرة ...

وتعتمد الألعاب الكبيرة على قواعد بيانات ضخمة لحفظ كل الإعدادات ذات العدد الكبير في هذه القاعدة ... ولكن ماذا عن ألعابنا الصغيرة والمتوسطة ؟؟؟

أعتقد أنه سيكون من الحماقة في تلك الحالة أن تستخدم قاعدة بيانات ... فهذا يشبه الرجل الذي يحرق بيته لأنه يريد سلق بيضة ... ولكن يمكنك أن تعتمد على وسائط التخزين البسيطة ... وهي نوعان :

1- ملفات السرد : TextFiles تتميز هذه الملفات بصغر الحجم وسهولة التعامل معها ... وقد أشيع عن غير الحق أنك لا يمكن أن تتعامل مع سطر بعينه في الملف النصي ... وأنك يجب أن تتعامل مع الملف النصي سطرا بسطرا وهذا يعد صحيحا من الوهلة الأولى ... ولكنه غير صحيح باستخدام بعض الحيل البرمجية التي سنتعلمها معا في هذه الوثيقة ...

2- ملفات الوصول العشوائي : Ini Files وهي ملفات المعلومات Ini ويمكنك لترى مثالا على هذه الملفات في المسار : C:WindowsWin.Ini

#2

التعامل مع الملفات النصية:

الجزء الاول:

الملفات النصية هي أكثر أنواع الملفات استخداما من قبل المستخدمين ... وهي موجودة تقريبا على جميع الأجهزة الشخصية بصورة كثيفة ... والمعروف أن الملفات النصية هي أبسط لغة برمجة في نظم النوافذ ... وأبسط و أعم محرر لكلمات النصية هو NotePad ... ومن هذا المحرر يمكنك أن تبرمج تطبيقات متكاملة ... فمنه يمكنك البرمجة بلغة Html و php و VbScript و JScript و غير ذلك ... ولكننا هنا لن نستخدم الملفات النصية كلغة برمجة ولكن كوسيطة تخزين ...

سنتعلم أولا كيف ننشئ ملف نصي :

والعجيب أنه لا توجد وسيلة معروفة برمجيا لإنشاء ملف نصي ... ولكننا نستخدم أمر فتح Open ونضع له مسارا لملف وهمي غير موجود ... فيقوم البرنامج بانشاء هذا الملف ... وهذه هي الطريقة الوحيدة المعروفة لي برمجية لإنشاء ملف ... ولإنشاء ملف أو فتح ملف نكتب الأمر التالي :

Open FileName For Type As #Number

الآن : حان وقت العمل ... فوقتنا قصير والدرس سهل وبسيط بإذن الله ... أولا قم بفتح مشروعا جديدا ... ثم أضف زر أمر ...

--(( مجرد القراءة من هذه الوثيقة لن يفيدك بقدر ما يفيدك القراءة وتنفيذ الأوامر في ذات الوقت )--

الآن احفظ المشروع في أي مكان تريد ... ويجب عليك حفظ المشروع حتى تشير App.Path إلى المكان الذي تحفظ فيه مشروعك ... ولو لم تحفظ المشروع سيشير App.Path إلى المكان الذي تم فيه إعداد Visual Basic 6.0 ...

ثم اضغط على زر الأمر مرتين متتاليتين حتى تظهر لك نافذة الكود التي ستكتب فيها :

Dim AppPath As String
Dim ValText As String
AppPath = App.Path & "test.txt"
ValText = "Bibo"
Open AppPath For Append As #1
Print #1, ValText
Write #1, ValText
Close #1

في الكود السابق كتبنا عدد من السطور إليك شرحها:

الكائنان AppPath متغير سيحمل مسار الملف النصي و ValText هو قيمة النص الذي سنرسله للملف النصي

الأمر AppPath = App.Path & "test.txt" هو أمر يقوم بتخزين مسار الملف النصي في المتغير AppPath

الأمر ValText="Bibo" هو أمر يضع قيمة Biboفي المتغير الآخر

الأمر Open...etc يقوم بفتح الملف النصي الموضوع مساره لإضافة البيانات ... ولولم يكن الملف موجودا ينشئه البرنامج ... وأن يجعل رقم الملف 1

الأمر print يقوم بتخزين قيمة ما في الملف النصي بدون أي اشارات تابعة له

الأمر Write يقوم بتخزين قيمة ما في الملف النصي بعد وضعه بين قوسي تنصين كالتالي:

"Bibo"

الأمر Close يقوم بإغلاق الملف الذي تم فتحه ...

الآن يمكنك أن تقوم بفتح الملف النصي لترى ما فيه

#3

الجزء الثاني:

تعال معي الآن نقوم بتعلم كيف نستطيع أن نقرأ ملف ... ومن ثم وضع محتويات هذا الملف في صندوق نصي ... TextBox

افتح مشروعا جديدا وضع فيه صندوق نص واجعل الخاصية MultiLine فيه تساوي True ثم أضف زر أمر ... ثم احفظ المشروع في مكان ثم انسخ لنفس هذا الماكن الملف النصي الذي أنشأناه من مشروعنا بالفصل السابق :

الملف اسمه : test.txt

وفيه سطران هما : Biboو "Bibo" والفارق بينهما هو علامتي التنصيص "" التين تحيطان بالكلمة ...

نحن الآن نريد قراءة هذين السطرين ومن ثم وضعهما في صندوق النص الذي أضفناه لمشروعنا ...

في الجزء من الكود الخاص بالضغط على زر الأمر أكتب الكود التالي :

Dim M As String '1
Open App.Path & "test.txt" For Input As #1 '2
Input #1, M '3
Text1.Text = M '4
Line Input #1, M '5
Text1.Text = Text1.Text & M '6
Close #1 '7

شرح الكود السابق :

1- الإعلان عن متغير سيحمل قيمة سطر من الملف النصي

2- فتح الملف النصي للقراءة فقط وترقيمه بالرقم 1

3- قراءة سطر من الملف النصي باستخدام الجملة Input ووضع نتيجة القراءة في المتغير M

4- جعل قيمة صندوق النص تساوي M أو السطر الذي قرأناه

5- قراءة السطر الثاني من المتغير باستخدام الجملة Line Input وتخزين نتيجة القراءة في المتغير M

6- إضافة قيمة المتغير M إلى نهاية صندوق لنص

7- إغلاق الملف النصي لتحرير الذاكرة

--(( لعلك لاحظت هنا أننا استخدمنا عبارتين مختلفتين عن بعضهما البعض في القراءة ... احداهما هي Input والأخرى هي Line Input والفارق بينهما هو أن الأولى تقرأ النصوص وتضيفها بدون علامتي التنصيص " " والأخرى تضيف علامتي التنصيص تماما كما في أسلوب الكتابة هو نفس الفارق بين Print و Write ))--

هناك مشكلة الآن وهي أن السطرين الذين قرأناهما قد وضعا في صندوق النص متجاورين وبدون مسافات بينهما ... ولكي نكتب كل كلمة في سطر نغير الكود ليكون هكذا :

Dim M As String
Open App.Path & "test.txt" For Input As #1
Input #1, M
M = M & vbCrLf
Text1.Text = M
Line Input #1, M
Text1.Text = Text1.Text & M
Close #1

أو

Dim M As String

Open App.Path & "test.txt" For Input As #1
Input #1, M
M = M & vbCrLf
Text1.Text = M
Line Input #1, M
Text1.Text = Text1.Text & M
Close #1

تلاحظ أن الكود السابق هو ذات الكود السابق ولكن بزيادة سطر واحد فقط وهو أحد هذين :

M = M & VbNewLine أو M = M & VbCrlf والحقيقة أن لا أعرف الفارق بينهما ولكن كلا منهما يقوم بنقل مؤشر الكتابة في صندوق النص للسطر الذي يلي السطر الحالي

#4

الجزء الثالث:

تعلمنا في الجزء السابق كيف نستطيع قراءة سطر أو أكثر من ملف نصي ... كذلك تعلمنا الطرق المختلفة للقراءة ... وفي الجزء السابق قرأنا ملف مكون من سطرين ... اثنين وذلك لأننا نعلم أن الملف مكون من سطرين فقط فماذا لو لم نكن نعلم عدد سطور الملف الذي نريد قراءته ؟؟؟ الأمر سهل للغاية وسبب سهولته هو دالة رائعة نستخدمها في القراءة وهي الدالة :

Eof(Number)

وهي دالة من نوع Boolean تكون قيمتها False دائما ولا تتحول إلى True إلا إذا وصلنا لنهاية الملف الذي نقرأه ...

الآن افتح الملف النصي الذي أنشأناه في الأجزاء السابقة ... ثم أمسح كل ما فيه من سطور ثم أضف للملف عدد من السطور غير محدد 5 أو 6 أو 7 أو غير ذلك ... واكتب في هذه السطور أي شيء تريد كتابته ... ثم عد للمشروع وفي الكود الخاص بالضغط على زر الأمر قم بحذف السطور التي كتبناها في الجزء السابق وبدلا منها أضف هذه السطور :

Dim M As String
Open App.Path & "test.txt" For Input As #1
Do Until EOF(1)
On Local Error Resume Next
Input #1, M
M = M & vbNewLine
Text1.Text = Text1.Text & M
Loop

تفسير الحلقة التكرارية :

1- من بداية الحلقة يمكنن أن نستنتج أن الحلقة ستظل تعمل حتى تصل القيمة Eof إلى True وهذا لا يحدث إلا إذا وصلنا لنهاية الملف النصي

2- التحسب لوجود الأخطاء ... وهي غالبا تكون أخطاء بسبب أن الحلقة التكرارية قامت بدورة زائدة عن نهاية الملف النصي ...

3- قراءة سطر من الملف وتخزين قيمة هذا السطر في المتغير M

4- جعل المؤشر ينتقل لسطر جديد

5- وضع قيمة M في صندوق النص

6- إعادة الحلقة التكرارية

وآخر شيء في دروس الملفات النصية هي كيفية قراءة الملف النصي ثم حذف أو تعديل أو قراءة سطر معين من الملف ... ستجد مع الوثيقة مثالا على ذلك في نفس مجلد الوثيقة

#5

العديد من المصطلحات التي وردت في هذه الدروس ...

المصطلح

الوظيفة

App.Path

هذا المصطلح عبارة عن متغير نصي يحمل مسار البرنامج مهما غيرت مكان البرنامج ... فلو كان مسار مشروعك C:MyAppApp.exe لكانت قيمة App.Path على مشروعك هي : c:MyApp

أنواع وطرق فتح الملفات المستخدمة مع العبارة Open والتي تكتب بعد For (العبارة Open ) تستخدم لفتح الملفات النصية ... وتجد شرح هذه العبارة في الجزء الأول

For Append

عند استخدام هذه الدالة فالبرنامج يعلم أنك ستحتاج لفتح الملف النصي وأن تكتب المزيد من البيانات عند نهاية البيانات المكتوبة أصلا في الملف ... ولو لم يكن الملف موجودا تقوم Vb بانشاء هذا الملف

For Input

عند استخدام هذه الدالة فالبرنامج يعلم أن تريد فتح ملف للقراءة فقط ولا يتيح لك الكتابة ... في الملف وإذا لم يكن الملف موجودا تظهر ؤسالة خطأ تفيد بهذا المضمون

For Output

يعمل هذا الأمر على إخبار اللغة أنك تريد فتح الملف لكتابة البيانات ... فإذا لم يكن الملف موجودا بالموقع المحدد يقوم البرنامج بانشاء ملف في المسار المحدد ... وإذا كان هناك ملف موجود أساسا ... تقوم اللغة بحذف هذا الملف ووضع ملفي جديدا مكانه

#6

سوف اقوم قريبا بوضع كيفية استخدام الوصول العشوائي...

و ارجو ان يستفاد الجميع..

#7

احسنت اخي وبارك الله فيك

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…