الملفات Files

فى هذا الفصل نشرح الطرق المختلفه لتخزين البيانات فى ملفات وكذلك استرجاعها من الملفات.

يعتبر تخزين البيانات واسترجاعها من الملفات من الموضوعات المهمة ، وتتميز لغة VC++ بتعدد طرق التعامل مع الملفات ، وكل طريقة تناسب حاله معينه. وفيما يلى عرض لهذه الطرق.

- طرق التعامل مع الملفات

1. استعمال الفصيلة CFile

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

2. الطريقه التسلسليه Serialazation

تتميز هذه الطريقة بسهولة تخزين واسترجاع البيانات ، وفيها يتم استعمال الفصيلة Carchive التى تحتوى على داله تسمى Serialize ( ). وتقوم هذه الداله بعملية التخزين والاسترجاع.

3. ملفات قواعد البيانات

يعتبر التعامل مع ملفات قواعد البيانات (مثل ملف بيانات طلبه ، عملاء ، ...) من أشهر العمليات فى مجال التطبيقات ، ولذلك سهلت لغة VC++ التعامل مع ملفات قواعد البيانات التى يتم انشائها بإستعمال برامج قواعد البيانات ، فيمكن التعامل مع ملفات برنامج (dbf) dbase III+ ، وملفات برنامج dbase IV ، وملفات البرنامج (mdb) Access وغيرها من الملفات ، وسوف نشرح كيفيه إنشاء تطبيق قواعد البيانات فى الجزء الثانى من الكتاب.

1. إستعمال الفصيلة CFile

توفر الفصيلة CFile دوال التعامل مع الملفات وجدول 14-1 يعرض هذه الدوال واستخدام كل دالة.

الدالة

الاستخدام

Open

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

Close

تستخدم لإغلاق الملف بعد إنتهاء استخدامه.

Duplicate

تستخدم لعمل نسخه آخرى من ملف موجود.

Read

تستخدم لقراءه بيانات من ملف موجود.

Write

تستخدم لكتابة فى ملف.

Remove

تستخدم لحذف ملف موجود.

Rename

تستخدم لتغيير اسم ملف موجود.

Seek

تستخدم لتوجيه مؤشر الملف إلى سجل معين (مكان) داخل الملف.

Get Length

تستخدم لمعرفة طول الملف بالبايت.

Get Position

تستخدم لمعرفة الموضع الحالى لمؤشر الملف.

Get Status

تستخدم لمعرفة مواصفات الملف من حيث زمن وتاريخ تخليق الملف ، زمن وتاريخ آخر تعديل للملف ، حجم الملف بالبايت.

Lock Range

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

UnLock Range

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

Set Status

تستخدم للتغيير فى مواصفات الملف مثل زمن وتاريخ تخليق الملف.

جدول 14-1 دوال التعامل مع الملفات

مثال

فى هذا المثال نشرح كيف يسمح للمستخدم بكتابه وتخزين بيانات فى ملف وكيفيه استرجاع هذا البيانات وذلك بإستعمال دوال الفصيلة CFile ، وقبل متابعه خطوات تصميم البرنامج إفتح ملف البرنامج Vcex 25 من الفهرس Chpt 14 ونفذه تحصل على نتيجه التنفيذ كما فى الشكل 14-2.

clip_image002

شكل 14-2

والشكل 14-2 عبارة عن برنامج من نوع SDI يحتوى فى خلفيته على أداة كتابة وزرى أوامر (Save Data, Read..) ، جرب استعمال البرنامج بكتابة بيانات فى أداة الكتابة ثم النقر على زر الأوامر Save Data ، انقر زر الأوامر Read Data تلاحظ ظهور البيانات التى تم حفظها كما فى الشكل 14-3.

clip_image003

شكل 14-3

خطوات تصميم البرنامج

1. إبدأ تطبيق جديد وذلك بإختيار File ثم New ثم Project Work Space ثم اكتب اسم للبرنامج وليكن Vcex 25.

2. اختار نوع التطبيق من النوع Single document.

3. تابع خطوات التصميم بالنقر على Next حتى تصل إلى الخطوة رقم 6 وهى شاشه اختيار فصائل البرنامج كما فى الشكل 14-4.

clip_image005

شكل 14-4

4. حدد نوع الفصيلة Cvcex 25 View من النوع CForm View حتى يمكن وضع أدوات على خلفية البرنامج.

5. انقر Ok ليتم تخليق تطبيق بهذه المواصفات.

* تصميم شاشه البيانات

لتصميم شاشه البيانات التى تحتوى على أداة الكتابة وزرى الأوامر اتبع ما يلى :

- من صندوق موارد البرنامج إختار Dialog ثم اختار IDD-Vcex25-Form تحصل على الشكل المبدئى لخلفيه البرنامج.

- بإستخدام صندوق الأدوات صمم الشكل 14-5.

clip_image006

شكل 14-5

* إعطاء متغير لأداة الكتابة

- اضغط المفتاح Ctrl وفى نفس الوقت انقر مرتين على أداة الكتابة IDC - Edit1 لتحصل على صندوق إضافه متغير لهذه الأداة.

- اكتب اسم المتغير Me1 واترك باقى الإختيارات كما هى.

* إضافة دوال لزرى الأوامر

لتوظيف زرى الأوامر (Save , Read Data) يجب إضافه دوال لها ويتم ذلك كما يلى :

- اضغط المفتاحين Ctrl+W للوصول إلى شاشه Class Wizard.

- اختر IDC-Button1 ثم BN-Clicked ثم Add function ثم Ok ليتم إضافه دالة بالاسم ON-IDC-Button1.

- كرر الخطوه السابقه مع IDC-Button2 ليتم إضافة دالة بالاسم ON-IDC-Button2 ( ).

ملحوظه : فى حالة تصميم صندوق الحوار عند الضغط على الطرف الأيمن للفأرة تظهر قائمه ببعض الأوامر المساعدة التى تسهل التصميم ، جرب الضغط على الطرف الأيمن للفأرة تحصل على قائمه اختيارات كما فى الشكل 14-6.

clip_image007

شكل 14-6

ويحتوى الشكل 14-6 على اختيارات القص والنسخ واللصق ، ويحتوى على اختيار إضافه أداة OLE ، وتحتوى القائمه على اختيارات محازاة الأدوات ، وتحتوى على اختيار Class Wizard واختيار صندوق الخصائص Properities وبالتالى يمكن لك إستعمال اختيارات هذه القائمه بشكل أسهل.

* كتابة سطور الدوال

اكتب سطور دالتى زرى الأوامر SAVE Data و Read Data وذلك كما يلى :

* دالة زر الأوامر Save Data

1 : C File f1 ;

2 : f1. Open (“C : \\ exfile.TXT”, Cfile : : mode Create | C File : : mode Write) ;

3 :Up date Data (TRUE) ;

4 : f1. Write (m-e1, m-e1. Get Length ( )) ;

5 : f1. Close ( ) ;

فى هذه السطور

فى السطر رقم 1 يتم تعريف متغير (هدف) من الفصيلة CFile بالاسم f1 وذلك للتعامل مع الملفات.

فى السطر رقم 2 يتم استدعاء الداله Open لفتح الملف والمعامل mode Create يعنى تخليق الملف والمعامل Mode Write يعنى فتح الملف للكتابة فيه.

فى السطر رقم 3 يتم استدعاء الداله UPdateData ( ) بالمعامل TRUE لنقل محتويات أداة الكتابة (IDC-Edit1) إلى المتغير المصاحب لها وهو m-e1.

فى السطر رقم 4 يتم استدعاء الدالة Write ( ) لكتابة محتويات المتغير m_e1 فى الملف الذى يشار إليه بالهدف F1.

فى السطر رقم 5 إستدعاء الداله Close ( ) لإغلاق الملف ، وبهذا تم كتابة محتويات أداة الكتابه فى الملف وغلقه.

* سطور داله زر الأوامر Read Data

1 : UINT br ;

2 : ehar ff [1000] ;

3 : CFile f1 (“C : \\ ex file.TXT”, CFile : : mode Read) ;

4 : br = f1. Read (ff,1000) ;

5 : ff [br] = 0 ;

6 : Message Box (ff) ;

فى هذه السطور

فى السطر رقم 1 تم الاعلان عن متغير بالاسم br وهذا المتغير من النوع الصحيح (int) ولكنه لا يحتوى على إشارة الرقم.

فى السطر رقم 2 اعلان عن متغير بالاسم ff من نوع مصفوفه حروف عدد عناصرها 1000 حرف.

فى السطر رقم 3 يتم فتح الملف exfile.txt لحالة القراءة وذلك بالمعامل mode Read ، مع ملاحظه أن تعريف المتغير f1 من نوع الفصيلة CFile بهذا الشكل يؤدى إلى استدعاء داله بناء الفصيله CFile وهى داله فتح الملف.

فى السطر رقم 4 يتم استدعاء الداله Read ( ) التى تقرأ البيانات من الملف المشار إليه بالمتغير f1 بحد أقصى 1000 حرف ، ووضع هذه البيانات فى المتغير ff وهو مصفوفه الحرفيات التى تم الاعلان عنها مسبقاً ، والمتغير br يأخذ عدد الحروف التى تم (قراءتها).

فى السطر رقم 6 يتم استدعاء الداله Message Box ( ) بالمتغير ff ليتم عرض محتويات المتغير ff وهى البيانات التى تم قرأتها من الملف فى صندوق الرساله.

2. الطريقة التسلسليه Serialization

تعتمد هذه الطريقه على الفصيله Carchive التى تحتوى على الداله Serialize ( ) ، وتقوم هذه الداله بعملية تخزين واسترجاع البيانات وتأخذ هذه الداله التركيب التالى :

1 : Void Cstudent : : Serialize (Carchive & ar)

2 : {

3 : if (ar. Is Storing ( ))

4 : ar << m- name << m-No ;

5 : else

6 : ar >> m-name >> m-No ;

7 : }

فى هذه السطور

بفرض أنه تم الاعلان عن فصيلة بالاسم Cstudent وتحتوى هذه الفصيلة على متغيرات هى m-name , m-No.

فى السطر رقم 1 يتم إنشاء الداله Serialize ( ) التى تحتوى على معامل هو المتغير ar وهو عبارة عن هدف من نوع الفصيلة Carchive.

فى السطر رقم 3 يتم اختبار نتيجه استدعاء الداله IsStoring ( ) التى تختبر اختيار المستخدم ، فإذا كان اختيار المستخدم هو SAVE كانت النتيجه True وبالتالى ينفذ السطر رقم 4.

فى السطر رقم 4 يتم تخزين محتويات المتغيران m-name , m-No فى الهدف ar الذى يمثل الملف الذى يختاره المستخدم وإذا كان اختيار المستخدم هو الاختيار Open يتم تنفيذ السطر رقم 6 الذى يقوم باسترجاع البيانات من الهدف ar الممثل فى الملف الذى يختاره المستخدم وتخزينها فى المتغيران m-name , m-No.

3. التعامل مع ملفات قواعد البيانات

يعتبر التعامل مع ملفات قواعد البيانات من أهم الموضوعات المهمه ، ويسمح VC++ بالتعامل مع جميع ملفات برامج قواعد البيانات مثل ملفات البرنامج Access وغيرها مع تسهيل العمليات المختلفه على حقول هذه الملفات ونظراً لكبر حجم هذا الموضوع فسوف يشرح بالتفصيل فى الجزء الثانى من الكتاب.

التسميات: