You are on page 1of 8

‫بسم ال الرحمن الرحيم‬

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

‫أقدم لكم دروس بسيطة أرجو أن تنال إعجابكم وتفيدكم إن شاء ال‬

‫جميع الحقوق محفوظة لخوكم ‪marimed‬‬

‫والذي ينتظر الدعاء له‬

‫تستخدم الدالة ‪ Open‬في فتح ملف في الذاكرة لغرض معين مثل القراءة منه أو الكتابة فيه وسنرى كيف نستطيع‬
‫بكل سهولة منع المستخدم من حذف أو تعديل أو نسخ أو فتح ملف بواسطة هذه الدالة‬

‫‪Open FileName For OpenMethod As #FileNumber‬‬

‫حيث‬

‫‪ FileName‬اسم الملف المراد فتحه ويكون متغير من النوع ‪String‬‬


‫‪ OpenMethod‬غرض الفتح‬
‫‪ FileNumber‬الرقم الذي سيستخدم للشارة إلى الملف وهو مفتوح ويكون رقم صحيح بين ‪ 512-1‬ويكون‬
‫متغير من النوع ‪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 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‬‬

You might also like