بالفجوال : تكملة التعامل مع المـــلفات

الكاتب : alhammady   المشاهدات : 934   الردود : 4    ‏2004-05-13
      مشاركة رقم : 1    ‏2004-05-13
  1. alhammady

    alhammady عضو

    التسجيل :
    ‏2003-07-09
    المشاركات:
    119
    الإعجاب :
    0
    بسم الله الرحمن الرحيم

    السلام عليكم ورحمة الله وبركاته


    ما المقصود بالملفات النصية ؟ .. لا يقصد بالملفات النصية بأنها تلك التي تملك لاحقة من نوع txt وإنما هي الملفات التي يمكن التعامل معها مع أي محرر نصوص كبرنامج المفكرة مثلاً والذي أعتبره أنا (وجهة نظر) من أهم البرامج الملحة بـ Windows .

    تقسم الملفات النصية إلى عدة أنواع :
    1- الملفات النصية العادية : والتي يتم التعامل معها سطراً سطراً وقد اختلفت الآراء حولها من كونها جيدة أم لا وإن كنت أنا شخصياً لا أحبذها .
    2- ملفات التهيئة أو كما تسمى ملفات الوصول العشوائي وهي ملفات متقدمة تعتمد على دوال API والتي سأناقشها في الدرس القادم إن شاء الله .

    لنتحدث عن الملفات النصية العادية ...

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

    لتوضيح الأفكار دعوني أشرح ذلك بمثال حيث أنه بفرض لدينا ملف وليكن مساره مثلا C:\My Documents\Test.txt وليكن محتواه التالي :

    [align=left]بسم الله الرحمن الرحيم
    السلام عليكم ورحمة الله وبركاته



    وكتبنا الكود التالي :

    [align=left]txt1 = "هذه مجرد تجربة"
    txt2 = "مع تحيات الحمادي"
    txt3 = "http://www.ye1.org"
    aFileName = "C:\My Documents\Test.txt"
    Open aFileName For Append As #1
    Print #1, txt1
    Print #1, txt2
    Print #1, txt3
    Close #1
    ففي هذا الكود قمنا بتعريف المتحولات الأربعة txt1,txt2,txt3,aFileName ثم قمنا بفتح الملف للكتابة فيه مع المحافظة على محتواه ورقمناه بالرقم 1 ثم قمنا بكتابة النصوص المراد كتابتها في الملف ثم قمنا بإغلاق الملف وسيكون محتوى الملف النهائي هو :


    [align=left]بسم الله الرحمن الرحيم
    السلام عليكم ورحمة الله وبركاته
    هذه مجرد تجربة
    مع تحيات الحمادي
    http://www.ye1.org/

    لاحظ أن أمر الإغلاق هو الأمر Close وتم ذكر رقم الملف المراد إغلاقه ولكن ماذا لو لم نذكر رقم الملف ... أي كان الكود بالشكل :


    [align=left]txt1 = "هذه مجرد تجربة"
    txt2 = "مع تحيات الحمادي"
    txt3 = "http://www.ye1.org"
    aFileName = "C:\My Documents\Test.txt"
    Open aFileName For Append As #1
    Print #1, txt1
    Print #1, txt2
    Print #1, txt3
    Close



    ستلاحظ أنه لا فرق في هذه الحالة بين هذين الكودين فما الفرق إذن ؟ الفرق عند فتح مجموعة ملفات كما في الكود التالي :

    [align=left]
    [align=left]Open aFileName1 For Append As #1
    Open aFileName2 For Append As #2
    ...
    ...
    ...
    Close

    فعندما وضعنا Close دون ذكر رقم للملف قام فيجوال بيسك بإغلاق جميع الملفات المفتوحة .

    والآن ماذا لو أردنا فتح ملف دون الحفاظ على محتواه فيكفي أن نستبدل Append بـ Output فمثلاً لنعد إلى مثالنا السابق حيث محتوى الملف C:\My Documents\Test.txt هو :


    [align=left]بسم الله الرحمن الرحيم
    السلام عليكم ورحمة الله وبركاته

    وكتبنا الكود التالي :


    [align=left]txt1 = "هذه مجرد تجربة"
    txt2 = "مع تحيات الحمادي"
    txt3 = "http://www.ye1.org"
    aFileName = "C:\My Documents\Test.txt"
    Open aFileName For Append As #1
    Print #1, txt1
    Print #1, txt2
    Print #1, txt3
    Close


    فسيكون الملف الناتج هو :



    [align=left]هذه مجرد تجربة
    مع تحيات الحمادي
    http://www.ye1.org/


    حتى الآن قمنا باستعمال تعليمة Print للكتابة داخل الملف ولكن يوجد تعليمة أخرى هي Write وتختلف عن هذه التعليمة بأنها تضع الناتج بين إشارتي تنصيص أي لو استبدلنا في الكود السابق تعليمة Print بـ Write لنتج لدينا الملف الذي محتواه كالتالي :

    [align=left][align=left]هذه مجرد تجربة
    مع تحيات الحمادي
    http://www.ye1.org/

    لكن ما الفائدة من هذا ؟.. سأجيب على هذا السؤال بعد أن أقوم بشرح القراءة من الملف ...

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

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


    [align=left]Open aFilename For Input As #1
    Input #1, txt
    Close #1


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

    [align=left]Open aFilename For Input As #1
    For num = 1 To 10
    Input #1, txt
    Next
    Close #1


    هناك تعليمة أخرى تشابه تعليمة Input وهي Line Input كما في الكود التالي :


    [align=left]Open aFilename For Input As #1
    For num = 1 To 10
    Line Input #1, txt
    Next
    Close #1

    والآن ما الفرق بين Input,Line Input وأيضاً Print,Write ؟...

    لو كان لدينا ملف محتواه كالتالي :
    1
    "2"
    3,4
    "5,6"

    وقمنا بقراءته من خلال Input لتعرف عليه على أنه مكون من 5 أسطر وهي :
    1
    2
    3
    4
    5,6

    أما إن تمت قراءته من خلال Line Input لتعرف عليه على أنه مكون من 4 أسطر وهي :
    1
    "2"
    3,4
    5,6

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

    والآن ماذا لو كان عندك ملف مكون من عدة أسطر مجهولة وأردت قراءة محتوى هذا الملف فكيف تعرف عدد الأسطر ؟... لفعل ذلك ما عليك سوى أن تستخدم تعليمة EOF والتي تبقى قيمتها False إلى أن نصل إلى نهاية الملف عندها تصبح قيمتها True أي بكتابة الكود التالي نضع كل سطر من أسطر ملف في ListBox :


    [align=left]Open aFileName For Input As #1
    Do Until EOF(1)
    Input #1, txt
    List1.AddItem txt
    Loop
    Close #1

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

    [align=left]Open aFileName For Input As #1
    Text1.Text = Input(LOF(1), 1)
    Close #1


    ارجو من الجميع تجريب الدروس واي ملاحظات ارجو ان تسجلوها

    اخوكم : الحمادي
     
  2.   مشاركة رقم : 2    ‏2004-05-13
  3. نجيب المجيدي

    نجيب المجيدي عضو فعّال

    التسجيل :
    ‏2003-12-08
    المشاركات:
    527
    الإعجاب :
    0
    دروس ممتازة أخي الحمادي , واصل أيضاً شرح الملفات العشوائية و الثنائية فهي مهمة للغاية ,,,

    تحية تقدير
     
  4.   مشاركة رقم : 3    ‏2004-05-14
  5. alhammady

    alhammady عضو

    التسجيل :
    ‏2003-07-09
    المشاركات:
    119
    الإعجاب :
    0
    مشكور اخي نجيب

    ان شاء الله اكمل ماأشرت اليه

    اخوك : الحمادي .,.,.,.,.,.,.,.,
     
  6.   مشاركة رقم : 4    ‏2004-05-16
  7. الصيني

    الصيني عضو فعّال

    التسجيل :
    ‏2003-01-07
    المشاركات:
    849
    الإعجاب :
    0
    شكرا جزيلا وبارك الله فيك
     
  8.   مشاركة رقم : 5    ‏2004-05-23
  9. صدى الحرمان

    صدى الحرمان عضو متميّز

    التسجيل :
    ‏2004-01-15
    المشاركات:
    1,519
    الإعجاب :
    0
    رائع أخي الكريم
     

مشاركة هذه الصفحة