أخبار

 

تسجيل الدخول

أهلا, زائر. الرجاء الدخول أو التسجيل
أêنèن 07, 2008, 10:33:17
اسم المستخدم: كلمة المرور:
تسجيل الدخول باسم المستخدم، كلمة المرور و مدة الجلسة

هل نسيت كلمة المرور؟

الإحصائيات

Members: 694
News: 194
Web Links: 3

مواضيع ذات صلة

آخر 10 أعضاء

mohloay
عذراء
feto
lord_s_man
mohamedhassan2008
found
sky_blue
الحجري
manchsteralex2000
eliventurr

إعلانات

Google
 
عالم الفيجوال بيسك دوت نت منتديات عالم الفيجوال بيسك دوت نت
جووجل
خطوة بخطوة في التعامل مع الملفات و المجلدات PDF Print E-mail
User Rating: / 2
PoorBest 
Written by أيوب جمال الإدريسي   
انأحد, 14 أêار 2006

بسم الله الرحمان الرحيم

 

 

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

 

مقدمة

انشاء واجهة البرنامج

إظهار  المجلد الحالي

تغيير مسار المجلد الحالي

التأكد من وجود مسار المجلد

وضع محتوى مجلد معين في ListBox

اختيار ملف معين

إظهار النتائج

حفظ النتائج

تجربة البرنامج

 

 

    مقدمة:

       كل مبرمج كيفما كان نوعه و الا و يحتاج في مرة من المرات للتعامل مع الملفات و الجلدات في برامجه الشئ الذي نبع منه أهمية هذا الدرس لكل مبتدئ في عالم البرمجة، و إاليكم لائحة بالأمور التي يمكن أي سوف يفعلها البرنامج او حتى برنامجكم الخاص :

 

ü      كتابة النتائج في ملف نتائج لكن قبل ذلك التأكد من وجوده، فاذا كان موجودا نقوم باضافة النتائج اليه اما في الحالة المغايرة فنقوم بانشاءه ثم وضع المعلومات و النتائج داخله.

ü      جمع الملعلومات حول ملف معين مثل تاريخ الإنشاء و حجم الملف و ما الى ذلك من معلومات نعرفها جميعا.

ü      اظهار ملفات مجلد معين في لائحة ListBox  الشئ الذي سيفرض علينا المرور من مجلد الى مجلد اذا ما كان المجلد الرئيسي يحتوي على مجلدات فرعية.

 

      طبعا قبل تمكنكم من عمل مثل هذه الوظائف في برنامجكم يجب عليكم أولا التعرف على الكلاسات المتوفرة و الخاصة بهذا الأمر فلذلك سنتعامل مع كلاسات و خصائص ال I/O   الموجودة في الفيجوال بيسك 2003 فمثلا ال  FileExplorer يمكننا من المرور على مجلد و معرفة الملفات  التي فيه و خصائصها و و عند نهاية الدرس ستعرف كيف يمكنك تحديد ملف واحد لتعرف خصائصه و كتابتها في ملف احداث او ملف خاص بتسجيل النتائج.

 

    إنشاء واجهة البرنامج

      فقط لنكون متفقين في اسماء الأدوات و كل شئ اليكم لائحة بالأدوات اللازم انشاءها و كذا أسماءها :

 

الأداة

الخصائص

القيمة

TextBox

Name

Text

txtDirectory

Directory

Button

Name

Text

btnSubmit

&Submit

Button

Name

Text

btnExamine

&Examine

ListBox

Name

lstFilePick

CheckBox

Name

Text

Checked

chkAttributes

Attributes

True

CheckBox

Name

Text

Checked

chkFileLength

File Length

True

CheckBox

Name

Text

Checked

chkLastAccess

Last Access Hour

True

CheckBox

Name

Text

Checked

chkFirstLine

Show First Line

True

CheckBox

Name

Text

Checked

chkSave

Save Results

False

 

 

    اظهار المجلد الحالي:

 

      في هذه المرحلة نريد معرفة المجلد الحالي للبرنامج و الطريقة جد جد سهلة و لو كنتم تعاملتم مع الفيجوال بيسك 6 فستعرفونها و هي عن طريق الدالة CurDir().

      ما نريد الآن هو وضع مسار المجلد الحالي في ال TextBox  التي أنشأنها txtDirectory  و اأمر جد  بسيط  نذهب للحدث Form_Load  و نكتب الكود التالي :

Me.txtDirectory.Text = CurDir()

      يمكنك تشغيل البرنامج من أجل التأكد من أن الكود يشتغل دون مشاكل.

 

   تغيير مسار المجلد الحالي

 

      طبعا في برنامجنا هذه المستعمل لديه الحق في تغيير مسار المجلد و كذا يلزمنا تغييره و ذلك عن طريق الدالة ChDir و ذلك طبعا بعد أن نأخذ المسار الجديد الذي كتبه المتعمل و من أجل ذلك نكتب الكود التالي في حدث Click  للبزر الذي أنشأناه صالفا و أسميناه BtnSubmit

 

 

Private Sub btnSubmit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSubmit.Click

        'اعلان متغير نضع فيه المسار الجديد

        Dim NewPath As String

        'نضع محتوى ال txtDirectory

        'في المتغير

        NewPath = Me.txtDirectory.Text

        'نغير المسار عن طريق الدالة بتمريرنا المسار الجديد لها

        ChDir(NewPath)

    End Sub

 

   التأكد من مسار المجلد

 

       طبعا لا يخلو أي برنامج من اخطأء لكن المبرمج الجيد هو الذي يستبق تلك الأخطاء بمعالجتها قبل ظهورها، و هنا في برنامجنا الخطأ قد يحدث كوننا لا نعرف ما سيكتب المستعمل في الخانة txtDirectory  فقد يكتب أرقام او يكتب مسار غير موجود أصلا او حتى يترك الخانة فارغة لذا و جب معالجة هذ الأخطاء و استباقها و من أجل ذلك  سنستعمل ال Try … Catch و سيكون الكود الجديد لل BtnSubmit  بعد التعديل كالتالي :

 

 

Private Sub btnSubmit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSubmit.Click

        'اعلان متغير يأخذ نص الخطأ لنظهره بعد ذلك

        Dim ErrorMessage As String

        'اعلان متغير نضع فيه المسار الجديد

        Dim NewPath As String

        'نضع محتوى ال txtDirectory

        'في المتغير

        NewPath = Me.txtDirectory.Text

        'بداية معالجة الأخطاء

        Try

            'نغير المسار عن طريق الدالة بتمريرنا المسار الجديد لها

            ChDir(NewPath)

            'اذا ما ترك المستعمل الخانة فارغة و لم يدخل مسارا نسجل الخطأ في المتغير الذي أعلناه أعلاه

        Catch ex As Exception When NewPath = ""

            'و صف الخطأ

            ErrorMessage = "يجب عليك ادخال مسار في الخانة المخصصة لذلك"

            'هنا مرحلة استباق الأخطاء الناتجة عن ادخال مسار خاطئ

        Catch

            'وصف الخطأ

            ErrorMessage = "يجب عليك ادخل مسار موجود، اذا كنت تحاول الوصول الى مجلد في قرص غير الحالي المرجو تغير اسم القرص"

        Finally

            'عدم اظهار رسالة الخطا الا اذا كان هناك خطأ

            If ErrorMessage <> "" Then

                MsgBox(ErrorMessage)

            End If

        End Try

 

    End Sub

 

 

 

      الشرح مرفق في الكود كما ترون فلا داعي للإعادة :)

 

   وضع محتوى مجلد معين في ListBox

 

      من أجل عمل هذه الخطوة نضيف الإعلان التالي في بداية الحدث Click  للزر BtnSubmit :

 

Dim ContentItem As String

 

      ثم في السطر الذي يأتي بعد End Try  نضع الكود التالي :

 

نمسح محتوى ال ListBox

        lstFilePick.Items.Clear()

        ' البحث سيكون فقط عن ملفات txt

        ContentItem = Dir("*.txt")

        'اذا كانت النتيجة فارغة نطهر رسالة تفيد بذلك

        If ContentItem = "" Then

            ErrorMessage = "لم يعثر البرنامج على أي ملف من هذا النوع في المجلد المحدد"

            MsgBox(ErrorMessage)

        End If

        ' نواصل هنا البحث في كل المجلد عن الملفات

        Do Until ContentItem = ""

            ' اذا ما وجدت نتيجة نضيفها الى ال ListBoc

            lstFilePick.Items.Add(ContentItem)

            ' نمر للملف الموالي

            ContentItem = Dir()

        Loop

 

'

 

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

 

   اختيار ملف معين

 

      طبعا بما أن الملفات الآن ظاهر في اللائحة فالمستعمل للبرنامج سيحتاج الى  اختيار ملف معين من اجل فحصه و من اجل ذلك اضف الكود التالي الى الحدث Click  للزر BtnExamine :

 

 

Private Sub btnExamine_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExamine.Click

        'نعلن متغير من نوع Object

        'سيحتوي على الملف الذي تم اختياره

        Dim thisFile As Object

        'نضع اسم الملف الذي تم اختياره في المتغير

        thisFile = lstFilePick.SelectedItem

        ' هل تم اختيار ملف ؟؟؟؟؟

        If thisFile Is Nothing Then

            'اظهار رسالة خطأ

            MsgBox("سيدي الفاضل انت لم تختر أي ملف ")

            Exit Sub

        End If

 

    End Sub

 

 

 

      بعد ان تم الآن اختيار الملف و معرفة الملف الذي تم اختياره سنرى كيفية تحديد المعلومات التي يجب جمعها حول هذا الملف و سيكون ذلك على مراحل :

  1. اعلان مجموعة من المتغيرات التي ستساعدنا في مهمتنا و سنضعها في الحدث BtnExamine_Click و المتغيرات هي :

 

Dim Attributes As FileAttribute

        Dim AttributeResult As String

        Dim LastAccess As Date

        Dim Length As Long

        Dim FirstLine As String

        Dim FinalString As String

        Dim ErrorMessage As String

 

      أظن ان المتغيرات واضحة و ذات اسماء شارحة لنفسها.

      الخاصية GetAttr  ترجع لنا عنصر من ال Enumiration  المعروفة ب FileAttribute  و التي تقدم خواص ملف او مجلد معين.البرنامج يتعامل فقط مع الملفات من نوع txt لذلك فعدة خصائص تم تجاهلها لكن ممكن تكتشفها بنفسك.

  1. الآن بعد اعلان المتغيرات نبدأ بكتابة الكود الذي سيرجع لنا خصائص الملف المختار من قبل المستعملو سيتم اضافة الكود التالي بعد الجملة End If  في الحدث btnExamine_Click :

 

' فحص الخصائص

'نرى اذا ما كان المستعمل قد اختار فحص الخصائص

        If chkAttributes.Checked = True Then

            Attributes = GetAttr(thisFile)

            If Attributes = 2 Then

                AttributeResult = "ReadOnly"

            ElseIf Attributes = 32 Then

                AttributeResult = "Archive"

            ElseIf Attributes = 34 Then

                AttributeResult = "ReadOnly and Archive"

            Else

                AttributeResult = "Normal"

            End If

            ' اضافة الخصائص الى النتائج

            stringAttributes = "خصائص الملف هي : "

            FinalString = stringAttributes + AttributeResult + "." + _

            vbCr

        End If

 

 

 

      الى هنا لا تحاول تنفيذ الكود لأنك ستجد خطأ لأننا لم نكمل الكود فانتظر الى ان ننتهي :)

      3.   نضف الكود التالي من أجل معرفة تاريخ آخر دخول للملف و سيكون أسفل الكود السابق :

 

 

 معرفة تاريخ آخر ولود للملف'

        If chkLastAccess.Checked = True Then

            LastAccess = FileDateTime(thisFile)

        End If

 

 

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

 

 

' معرفة حجم الملف

        If chkFileLength.Checked = True Then

            Length = FileLen(thisFile)

        End If

 

 

 

5.    نضيف كود آخر من أجل قراءة السطر الأول للملف :

 

 

' قراءة السطر الأول

        If chkFirstLine.Checked = True Then

            Try

                FileOpen(1, thisFile, OpenMode.Input)

                FirstLine = (InputString(1, 80))

            Catch ex As Exception