لفتح الملفات Open شرح الدالة في vb 6

بسم الله الرحمن الرحيم
إن الحمد لله نحمده وستعينه ونستغفره ونعوذ بالله من شرور أنفسنا ومن سيئات أعمالنا ،من يهده الله فلا مضل له ومن يضلل فلا هادي له وأشهد أن لا إله إلا الله وحده لا شريك له وأشهد أن محمداً عبده ورسوله صلى الله عليه وعلى آله وصحبه وسلم .وبعد






فيم تستخدم هذه الدالة؟
تستخدم الدالة Open في فتح ملف في الذاكرة لغرض معين مثل القراءة منه أو الكتابة فيه  وسنرى كيف نستطيع بكل سهولة منع المستخدم من حذف أو تعديل أو نسخ أو فتح ملف بواسطة هذه الدالة
كيف تكتب؟
Open FileName For OpenMethod As #FileNumber
حيث
    FileName  اسم الملف المراد فتحه ويكون متغير من النوع String
 OpenMethod 
 غرض الفتح
   FileNumber 
الرقم الذي سيستخدم للإشارة إلى الملف وهو مفتوح ويكون رقم صحيح بين 1-512 ويكون متغير من النوع Integer

إغراض فتح الملف هي
 :

1- 
فتح للقراءة من الملف ونستبدل الكلمة OpenMethod بالكلمة Input
2- 
فتح لمسح مابداخل الملف وكتابة بيانات جديدة ونستبدل OpenMethod بالكلمة OutPut
3- 
فتح لإضافة بيانات على الموجودة داخل الملف ونكتب Append
4- 
فتح للغرض الثنائي ونكتب Binary وهذه الطريقة تستخدم تحديداً مع الملفات التنفيذية وان كنا نستطيع استخدامها مع اى نوع من الملفات لكن يفضل إلا تستخدم إلا مع هذا النوع
5- 
فتح للغرض العشوائي ونكتب Random وتستخدم إذا كنا لاستطيع تحديد الغرض الذي نفتح بسببه الملف
ملاحظة 
##
عندما نريد إن نكتب داخل الملف يوجد أمران هما Print, Write والفرق بينهما إن Write يطبع النص بين علامتي اقتباس  ("")

##
لإغلاق الملف المفتوح نستخدم الأمر Close ثم نمرر له رقم الملف Close #1 وإذا أردنا إغلاق جميع الملفات المفتوحة فيمكن استخدام الأمر Reset عملاً بأن التعديلات التي نجريها على الملف لن تظهر الا بعد إغلاقه

##
عند الفتح بواسطة الكلمات المحجوزة (Output , Random , Binary , Append) سيقوم البرنامج بإنشاء الملف إذا لم يجده في المكان المحدد
تطبيقات على الدالة Open
قم بعمل ملف نصي على المشغل C وسمه Test.txt والذي سنجرى عليه التطبيقات ثم افتح مشروعك وأدرج اداتى مربع نص وزر أمر حيث سنكتب الكلام المراد إضافته في مربع النص وننفذ الكود عند الضغط على زر الأمر وغير خاصية MultiLine لمربع النص إلى True وخاصية ScrollBars إلى  Both
التطبيق رقم 1 .
تطبيق غرض مسح بيانات الملف وإضافة بيانات جديدة OutPut
ألان الملف لاحتوى على اى بيانات ونريد إن نكتب بداخله الجملة " يا رب أغفر لصاحب الكتاب marimed "
اكتب الجملة داخل مربع النص ثم اكتب الكود
Private Sub Command1_Click()
Open "C:\Test.txt" For OutPut As #1
Print #1, Text1.Text
Close #1
End Sub
اذهب إلى الملف وستجد إن الجملة قد أضيفت مع مسح ما كان في الملف
التطبيق رقم 2 .
تطبيق غرض إضافة بيانات على البيانات الموجودة في الملف Append
يحتوى الآن الملف على الجملة التي أضفناها وهى " يا رب أغفر لصاحب الكتاب marimed "
 ونريد أن نضيف الجملة "وجميع المسلمين " إلى الملف
بنفس الطريقة ستكتب الجملة في مربع النص وستكتب الكود التالي

Private Sub Command1_Click()
Open "C:\Test.txt" For Append As #1
Print #1, Text1.Text
Close #1
End Sub
والآن اذهب إلي الملف ولاحظ الفرق
التطبيق رقم 3 .
تطبيق غرض قراءة البيانات Input
بيانات الملف الآن هي" يا رب أغفر لصاحب الكتاب marimed  وجميع المسلمين"
نريد أن نقرأ هذه البيانات من الملف ووضعها في مربع النص لدينا طريقتين لهذا الغرض  
هي قراءة الملف سطر سطر بواسطة الحلقات التكرارية والطريقة الثانية باستخدام الدالة   Lof وسنرى الآن كيفية استخدام الطريقتين
طريقة الأولي  
عند فتح الملف لغرض القراءة منه يجب وضع اسم الملف في متغير وتمرير المتغير للدالة Open ثم لدالة القراءة Input   أو  Line Input
يجب أن نعرف إننا عندما نقرأ سطر من ملف ينتقل مؤشر القراءة إلى السطر التالي وهكذا إلى نهاية الملف وإذا لم نعطه شرط بالتوقف عند نهاية الملف فستظهر لنا رسالة خطأ والدالة التى تدلنا اذا كان المؤشر وصل الى نهاية الملف أم لا هي الدالة EOF ومعاملها هو رقم الملف وتعود بالقيمة True إذا كنا في نهاية الملف وسيكون الكود كالتالي
Private Sub Command1_Click()
Dim F as string 
F = "C:\Test.txt"
Open F For Input As #1
Do While EOF(1) = False
DoEvents
Input #1, F
If Text1.Text = "" Then
Text1.Text = F
Else
Text1.Text = Text1.Text & vbNewLine & F
End If
Loop
Close #1
End Sub
لاحظ أننا استخدمنا الثابت vbNewLine والذي يحاكى الضغط على زر Enter اى يقوم بالكتابة في سطر جديد
ملحوظة هامة :
قم بفتح الملف ثم عدل السطر الاول من " يا رب أغفر لصاحب الكتاب marimed  " الى " يا رب أغفر لصاحب الكتاب marimed  , وجميع أهله " ثم طبق الكود السابق
ستلاحظ انه عند وضع البيانات في مربع النص تم وضع الجملة" يا رب أغفر لصاحب الكتاب marimed  " والجملة" وجميع أهله "  في سطر أخر اى أن الرمز "," يعطى سطراً جديداً عند القراءة ولتفادي  هذه المشكلة نستبدل الكود السابق بهذا الكود
Private Sub Command1_Click()
Dim F$
F = "C:\Test.txt"
Open F For Input As #1
Do While EOF(1) = False
DoEvents
Line Input #1, F
If Text1.Text = "" Then
Text1.Text = F
Else
Text1.Text = Text1.Text & vbNewLine & F
End If
Loop
Close #1
End Sub
الآن طبق الكود وسترى النتيجة
الطريقة الثانية
بواسطة الدالة  LOFالكود بسيط جداً
Private Sub Command1_Click()
Dim F$
F = "g:\Test.txt"
Open F For Input As #1
Text1.Text = Input(LOF(1), 1)
Close #1
End Sub
حيث أن الدالة LOF تعود بحجم الملف بالبايت أو عدد البايتات التي يحتويها الملف
التطبيق رقم 4
تطبيق الغرض الثنائي Binary
الطريقةOpen FileName For Binary As #FileNumbe 
يمكننا عند فتح الملف لهذا الغرض قراءة أو كتابة بيانات داخل الملف اى إنها تعمل عمل الطريقة Append والطريقة Input معاً لكن توجد فروق هامة يجب ملاحظتها وهى:
1* عند التعامل معه كالطريقة Append
عند فتح الملف للغرض الثنائي يتم التعامل مع الملف بنظام البايتات اى إننا عند الإضافة لا تتم إضافة بيانات وإنما يتم التعديل على البايتات التي ستخزن فيها البيانات الجديدة وتتم الكتابة باستخدام الكلمة  Put
هذه النقطة من الصعب شرحها لكن المثال التالي سيوضحها أكثر
ضع ملفاً في المسار "C:\Test.txt" واكتب داخله
xxxxx عالم البرمجيات واللينوسك
أخوكم marimed  يرجو منكم أن تدعو له
أرجو أن يكون الشرح في المستوي
المنتدي العزيزwww.startimes2.com
والآن الكود التالي
Private Sub Command1_Click()
Open "C:\Test.txt" For Binary As #1
Put #1, , "منتدى عالم البرمجيات واللينوسك"
Close #1
End Sub
الان افتح الملف وستجد ان الجملة xxxxx " عالم البرمجيات واللينوسك" قد تغيرت إلي "منتدى عالم البرمجيات واللينوسك"
وهذا يعنى انه تم التعديل في البايتات التي تحتوى على الجملة الأولى
الجملة Put لها ثلاث معاملات الأول هو رقم الملف المفتوح والثاني هو رقم البايت الذي سنبدأ من عنده التعديل والثالث البيانات الجديدة التي سيتم كتابتها
2*التعامل معه كالطريقة Input
نستخدم للقراءة الكلمة Get ونمرر للمعامل الأول رقم الملف والمعامل الثاني بايت بداية القراءة والمعامل الثالث المتغير الذي سيحمل البيانات ويجب ان يكون متغير معرف على انه من النوع String علماً بأن عدد البايتات التي سيتم قرائتها تتحدد حسب طول المتغير الذي سيحمل البيانات
لنفرض أن أول جملة في الملف السابق هي"منتدى عالم البرمجيات واللينوسك" ونريد قراءتها ووضعها في مربع نص عدد حروف الجملة هي 30  إذا يجب أن يكون طول المتغير هو 30 لذلك نضع 30  مسافة داخل المتغير عن طريق الدالة Spaceالكود:
Private Sub Command4_Click()
Dim D as string
D = Space(30)
Open "C:\Test.txt" For Binary As #1
Get #1, , D
Text1.Text = D
Close #1
End Sub
إذا غيرت الرقم 40 الممرر للدالة Space إلى 5 سيتم قراءة الكلمة "منتدى" فقط
الآن نريد أن نقرأ كلمة " عالم البرمجيات واللينوسك" فقط فكيف سيكون الكود؟؟
هنا يجب أن نستخدم المعامل الثاني والذي يعبر عن بداية القراءة ومن المفروض إن يكون 7 وعدد حروف كلمة " عالم البرمجيات واللينوسك" هو 24  وسيتم تمريره للدالةSpace وبذلك يكون الكود كالتالي
Private Sub Command4_Click()
Dim D$
D = Space(24)
Open "C:\Test.txt" For Binary As #1
Get #1, 7, D
Text1.Text = D
Close #1
End Sub
جرب الكود وستجد أن مربع النص كُتب بداخله كلمة  " عالم البرمجيات واللينوسك"
كيف يمكن تشفير ملف بواسطة الدالة Open
في هذه الحالة ستتغير طريقة الكتابة إلى
Open FileName For OpenMethode Lock LockType As #FileNumber
م  يأتي بعد الكلمة Lock هو الذي يحدد نوع الإغلاق
(1) 
حماية من القراءة (الفتح) نستبدل LockType بالكلمة Read
(2) 
حماية من التعديل نكتب Write
(3) 
حماية مزدوجة نكتب Read Write

عند استخدام حماية القراءة ستمنع المستخدم من فتح الملف وحماية التعديل ستمنع المستخدم من تعديل بيانات الملف علماً بأنه عند استخدام اى طريقة من هذه الطرق يمنع نسخ الملف او حذفه او نقله من مكانه لكن لابد ان يظل الملف مفتوحاً وذلك بحذف الامر Close من الكود وكتابته عندما نريد ان نفتح الملف للمستخدم ويفضل عند الحماية بهذه الطرق ان يكون الفتح لاحد الغرضين (Input , Random)لدينا الان ملف التجارب "C:\Test.txt" سنحميه الان من القراءة
الكود
Private Sub Command1_Click()
Open "C:\Test.txt" For Input Lock Read As #1
End Sub
حاول فتح الملف ولاحظ بنفسك
الآن سنحميه من التعديل
Private Sub Command1_Click()
Open "C:\Test.txt" For Input Lock Write As #1
End Sub
افتح الملف سيفتح معك لكن حاول تعديل بياناته وإغلاق الملف ستظهر لك رسالة تنبيه بالحفظ اضغط "Yes" ولاحظ النتيجة
الحماية المزدوجة ستحمى الملف من الفتح أو التعديل
Private Sub Command1_Click()
Open "C:\Test.txt" For Input Lock Read Write As #1
End Sub
لفك التشفير عن الملف نكتب الكود
Private Sub Command1_Click()
Close #1
End Sub
لان تعرفنا على طريقة بسيطة جداً للتشفير وفى نفس الوقت غاية في القوة بالنسبة لويندوز
بقيت عندي ملحوظة رأيت أن أتركها لنهاية الدرس
عند تحديد رقم الملف عند فتحه يجب أن نتأكد أولا من أنه لايوجد ملف آخر مفتوح بنفس الرقم لأنه أن وجد فستظهر رسالة معناها آن الملف مفتوح بالفعل ولتفادى هذه المشكلة وفرت لك بيئة الفيجوال بيسيك الدالة  FreeFile  والتي تعود بأول رقم يمكن إعطاؤه للملف عند الفتح وتستخدم كالتالي
Private Sub Command1_Click()
Dim N%
N =FreeFile
Open FileName For OpenMethod As #N
End Sub
وعند الاغلاق نمرر المعامل N الى الدالة Close
Private Sub Command1_Click()
Close #N
End Sub

تعليقات

  1. أهلا وسهلا بك اخى احمد ....اتمنى ان تزور موفع منتدى مصر التقنى http://egy-tech.forumegypt.net/ لتشاركنا بمقالات و يمكنك الحصول على مقابل مادى مقابل المشاركات ان كنت من مصر

    ردحذف

إرسال تعليق

المشاركات الشائعة من هذه المدونة

الارسنال يتعادل مع ليفربول في مباراه من النوع الثقيل

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

ديباي يواصل تعذيب كلوب بروج باقدام روني