اخواني اعضاء المنتدى ، السلام عليكم و رحمة الله و بركاته.....
سأقدم لكم اليوم موضوعا" هاما" و هو Serialization.
عندما تريد ارسال بيانات من برنامج لبرنامج آخر فعليك ان تحول هذه البيانات الى بيانات من نوع Object
فمثلا" لديك برنامج تسوق عبرالانترنت و تريد ارسال رقم credit card الى برنامج آخر .
سيحدث ان يتم تحويل رقم الكارت الى بيانات object ، تسمى هذه العملية Serializition اي تشفير للبيانات .
عندما يستقبل البرنامج الآخر هذه البيانات فانه سيفك هذا التشفير و يحول البيانات من object الى حالتها الأصلية تسمى هذه العملية Deserializition.
يفيد Serializition في :
-حفظ حالة البرنامج.
-تبادل البيانات عبر الشبكة.
-نسخ البيانات من برنامج لآخر.
تنقسم عملية تحويل البيانات الى object الى نوعين:
-Binary Serializition:يستخدم عند تبادل البيانات من برنامج لآخر على نفس الجهاز.لا يقرأه سوى برنامج معمول بالدوت نت.
-Xml Serialixition:مفيد في تبادل البينات عبر الشبكة حيث يحولها الى ملفات من نوع xml و يفيد هذا في منع القرصنة عبر الشبكة.أو عند اختلاف platforms الموجودة على الأجهزة.
من الأمور الشائعة لاستخدام serializition هي حفظ اسم الدخول و كلمة السر لمستخدم أو تعديل هذه البيانات عند الضرورة.
في هذا المثال سنقوم بحفظ بيانات مستخدم جديد:
-قم باضافة صنوقي نص و عنوانين
-قم باضافة زر و سمه btn_save.
-سم صناديق النص كالآتي:txt_account , txt_pass
-اكتب في خاصية text للعنوانين:اسم المستخدم ، كلمة المرور
-في البداية استخدم فضاءاءات الاسم التالية:
using System.IO; using System.Collections.Generic; using System.Collections; using System.Runtime.Serialization.Formatters.Binary;
-تحت زر btn_save اكتب الكود التالي:
//اسم الملف الذي ستحفظ فيه البيانات و امتداه".data"
string name = txt_account.Text + ".data";
ArrayList arr = new ArrayList();
//عمل array list لوضع البيانات فيها.
//اضافة البيانات
arr.Add(txt_account.Text);
arr.Add(txt_pass.Text);
// stream لعمل ملف
FileStream fs = new FileStream(name, FileMode.Create);
//عمل instance من class BinaryFormatter الذي سيقوم بتشفير البيانات الى النوع binary.
BinaryFormatter bf = new BinaryFormatter();
//تشفير البيانات
bf.Serialize(fs, arr);
// غلق stream
fs.Close();
//تم حفظ البيانات في ملف يحمل الاسم الذي ادخلته في صندوق نص اسم المستخدم+".data"
//ستجد الملف موجود في مجلد bin و عندما تفتحه ببرنامج notebad فستجد رموز و أرقام غريبة لن يفهم منها شيئا".
MessageBox.Show("تم الحفظ بنجاح");- قم بعمل نموذج آخر و ضع عليه صندوقي نص و عنوانين و زر
-اكتب الكود التالي تحت الزر:
//اسم الملف الذي ستقٌرأ البيانات بداخله
string file = textBox1.Text + ".data";
// عمل instance من class fileinfo للبحث عن الملف
FileInfo f1 = new FileInfo(file);
// شرط وجود الملف
if (f1.Exists)
{
FileStream fs = new FileStream(file, FileMode.Open);
BinaryFormatter bf = new BinaryFormatter();
// فك تشفير البيانات و تحويلها من object الى نوعها الأصلي arraylist.
ArrayList arr = (ArrayList)bf.Deserialize(fs);
// ملأ listbox استعدادا لمقرنة البيانات المدخلة من المستخدم بها
for (int i = 0; i < arr.Count; i++)
{
listBox1.Items.Add(arr.ToString());
}
fs.Close();
// مقارنة البيانات
if (textBox1 .Text ==""||textBox2 .Text ==""||comboBox1 .Text ==""||textBox1.Text != listBox1.Items[0].ToString() || textBox2.Text != listBox1.Items[1].ToString()
|| comboBox1.SelectedItem.ToString() != listBox1.Items[2].ToString())
{
MessageBox.Show("اسم الدخول او كلمة المرور خطأ");
}
else if (textBox1.Text == listBox1.Items[0].ToString()
&& textBox2.Text == listBox1.Items[1].ToString()
&& comboBox1.SelectedItem.ToString() == listBox1.Items[2].ToString())
{
MessageBox.Show("البيانات صحيحة");
}اتمنى ان يكون الموضوع مفيدا" ...... و السلام عليكم و رحمة الله و بركاته
:lol: :lol: :lol: :lol: :lol: