مقدمة :
يتحدث هذا الموضوع عن كيفية إتاحة تغيير كلمة المرور للمستخدم مثل الجهاز المحمول لتضع فيه كلمة سر أولاً عليك كتابة كلمة السر القديمة ثم كتابة الجديدة ثم تأكيدها وهذا ما سنتدرب عليه في المثال ، قد تظن هذا ممكناً باستعمال المتغيرات العامة ولكن بعد أن أنشأت مشروعاً وجعلت فيه إمكانية لتغيير كلمة السر ستفاجأ عند إنهاء البرنامج وإعادة إقلاعه أن كلمة السر قد عادت إلى سابق عهدها ، السبب في ذلك هو أن المتغير (والذي يمثل قيمة مربع النص مثلاً) ليس متغيراً دائماً حيث أن أطول مدى للمتغيرات في فيجوال بيسيك يدوم إلى أن تنهي البرنامج لذلك سيعلمك هذا الدرس كيف تحفظ المتغيرات حتى بعد إنهاء البرنامج وحتى بعد إطفاء الكمبيوتر . بالطبع هذا الدرس للمبتدئين ولكن أرجو من الأعضاء المتقدمين في مجال البرمجة الإضافة على هذه المعلومات كما أن هذا البرنامج ليس برنامج حماية ويمكن فكه وأنت مغمض العينين . ويعتمد هذا الدرس على التعامل مع الملفات لذلك إذا لم تكن تجيد التعامل مع الملفات فراجع درس (معالجة الملفات) للأخت بنت اليمن المحترمة
الدرس :
<H1 dir=rtl style="MARGIN: 24pt 0cm 0pt">أولاً أنشئ ملف text يدوياً وسمه abd (اتباعاً للمثال المرفق) ثم افتحه واكتب فيه 3314788 ثم أنشئ مشروعاً جديداً واحفظه على نفس المسار الموجود فيه ملف ال. text والآن في الفورم الأول أنشئ زر أوامر سمه cmdok وضع عنواناً له هو ok وأنشئ تيكست بوكس وامح محتواه ، الآن في حدث تحميل الفورم اكتب الكود التالي :</H1><H1 dir=rtl style="MARGIN: 24pt 0cm 0pt">Private sub form1_load ()</H1><H1 dir=rtl style="MARGIN: 24pt 0cm 0pt">Text1.passwordchar=*</H1><H1 dir=rtl style="MARGIN: 24pt 0cm 0pt">End sub</H1><H1 dir=rtl style="MARGIN: 24pt 0cm 0pt">والآن في حدث الضغط على cmdok اكتب</H1><H1 dir=rtl style="MARGIN: 24pt 0cm 0pt">Private sub cmdok_click ()</H1><H1 dir=rtl style="MARGIN: 24pt 0cm 0pt">Open app.path & "\abd.txt" for input as #1</H1><H1 dir=rtl style="MARGIN: 24pt 0cm 0pt">Line input #1 , a</H1><H1 dir=rtl style="MARGIN: 24pt 0cm 0pt">If text1.text=a then</H1><H1 dir=rtl style="MARGIN: 24pt 0cm 0pt">Msgbox "congratulations",vbokonly,"mypassword"</H1><H1 dir=rtl style="MARGIN: 24pt 0cm 0pt">Else</H1><H1 dir=rtl style="MARGIN: 24pt 0cm 0pt">Msgbox "enter the correct password please",vbokonly,"mypassword"</H1><H1 dir=rtl style="MARGIN: 24pt 0cm 0pt">End if</H1><H1 dir=rtl style="MARGIN: 24pt 0cm 0pt">Close #1</H1>Text1.text=""
Text1.setfocus
<H1 dir=rtl style="MARGIN: 24pt 0cm 0pt">End sub</H1><H1 dir=rtl style="MARGIN: 24pt 0cm 0pt"> حسناً الآن وقت شرح الكود :</H1><H1 dir=rtl style="MARGIN: 24pt 0cm 0pt">في حدث تحميل الفورم وضعنا الكود</H1><H1 dir=rtl style="MARGIN: 24pt 0cm 0pt">Text1.passwordchar=*</H1><H1 dir=rtl style="MARGIN: 24pt 0cm 0pt">هذا لترميز كلمة السر لتظهر على شكل نجوم ، أما بالنسبة لحدث الضغط على الزر فالأمر الأول </H1><H1 dir=rtl style="MARGIN: 24pt 0cm 0pt">Open app.path & "\abd.txt" for input as #1</H1><H1 dir=rtl style="MARGIN: 24pt 0cm 0pt">يقوم هذا الأمر بفتح الملف abd.txt الموجود في نفس مسار البرنامج (app.path) للقراءة فقط for input ونعطيه الرقم #1 </H1><H1 dir=rtl style="MARGIN: 24pt 0cm 0pt">وأما الأمر </H1><H1 dir=rtl style="MARGIN: 24pt 0cm 0pt">Line input #1 , a</H1><H1 dir=rtl style="MARGIN: 24pt 0cm 0pt">فيقوم بقراءة السطر الذي يحوي الرقم السري ويضع قيمته في المتغير a ، وبعد ذلك الكود</H1><H1 dir=rtl style="MARGIN: 24pt 0cm 0pt">If text1.text=a then</H1><H1 dir=rtl style="MARGIN: 24pt 0cm 0pt">Msgbox "congratulations",vbokonly,"mypassword"</H1><H1 dir=rtl style="MARGIN: 24pt 0cm 0pt">Else</H1><H1 dir=rtl style="MARGIN: 24pt 0cm 0pt">Msgbox "wrong password",vbokonly,"mypassword"</H1><H1 dir=rtl style="MARGIN: 24pt 0cm 0pt">End if</H1><H1 dir=rtl style="MARGIN: 24pt 0cm 0pt">هذا يجعل البرنامج يتحقق من قيمة مربع النص فإن كانت مساوية لقيمة المتغير a أي لكلمة السر المحفوظة في ملف التيكست فإنه يعطيك رسالة تهنئة وإن كانت لا تساويها فإنه يظهر رسالة يخبرك فيها بأن كلمة السر خطأ والأمر
</H1>close #1
لإغلاق الملف والأمر
Text1.text=""
Text1.setfocus
يقوم بإفراغ مربع النص وتوجيه التركيز إليه ، الآن أنشئ زر أوامر آخر سمه cmdchange وضع عنوانه change password وأنشئ فورم جديدة واكتب في حدث الضغط على هذا الزر
Private sub cmdchange_click()
Form2.show
End sub
الآن في الفورم الثاني أنشئ أداة عنوان وضع فيها enter the old password please واعمل زر أوامر وسمه ok وضع فيه نفس كود الزر السابق (cmdok) مع تغيير بسيط
If text1.text=a then
Form3.show
Else…….
وأنشئ زر back وطبعاً تيكست بوكس ثم أنشئ فورم جديد هو form3 ضع فيه زر Back وتيكست بوكس وأداة عنوان تقول للمستخدم أن يضع كلمة السر الجديدة وزر ok اكتب تعليماته كما يلي
Private sub cmdok_click()
If text1.text="" then
Msgbox "write a password",vbokonly,"my password"
else
Me.hide
Form4.show
End if
End sub
الآن على المستخدم إدخال كلمة السر الجديدة في التيكست بوكس ثم يؤكدها في الفورم التالي الذي هو form4 الذي ستضع فيه أداة عنوان تقول للمستخدم أن يؤكد كلمة السر وزر back وزر ok نكتب فيه
Private sub cmdok_click()
B=text1.text
If b= form3.text1.text then
Open app.path & "\abd.txt" for output as #1
Print #1,b
Msgbox "the password was changed",vbokonly,"my password"
Unload me
Unload form3
Form1.show
Close #1
Else
Msgbox "the new password and the confirm of it are different",vbokonly,"my password"
Text1.text=""
Text1.setfocus
End if
في هذا الكود نضع قيمة التيكست بوكس في المتغير b ثم نقارنه مع التيكست بوكس في الفورم السابقة (لهذا أخفيناها ولم نزلها من الذاكرة) وبعد ذلك إذا تطابقا يقوم البرنامج بإعادة إنشاء الملف abd.txt ويطبع فيه قيمة المتغير b (التيكست بوكس) ثم يظهر رسالة تخبر المستخدم أن كلمة السر تغيرت وتنهي كل النوافذ وتعود إلى النافذة الرئيسية وأما إذا لم يتطابقا فإنه يعرض رسالة يخبرك فيها بأن كلمة السر وتأكيدها ليسا متطابقين ، وطبعاً لا تنسى دائماً ضبط خاصية passwordchar إلى نجمة أو شيئ ما يشبهها ، ويمكنك إضافة بعض الكماليات مثل التحقق إذا كانت كلمة السر الجديدة مساوية للقديمة وعندها لن يكون المستخدم بحاجة إلى تغيير كلمة السر
أرجو أن يعجبكم هذا الدرس وأكرر رجائي من الأعضاء طرح أفكار أخرى لطرق حفظ المتغيرات حتى بعد إنهاء تشغيل الكمبيوتر .
يوجد في المرفق الأول مثال على البرنامج الذي صنعناه وفي الثاني درس معالجة الملفات للأخت بنت اليمن