PDA

View Full Version : مبتدی: کمک درباره ذخیره اطلاعات برنامه (سطح مبتدی)



milad-engineer
دوشنبه 14 اسفند 1391, 15:46 عصر
با سلام
من در برنامه ای که طراحی کردم یک قسمت Setting هست.
چطور میتونم تغیرراتی که کاربر در این قسمت انجام میده رو بعد از زدن SAve ذخیره و در باره بعد که برنامه باز شد آن تنظیمات انجام شده دوباره اعمال شوند؟

با تشکر

sohil_ww
دوشنبه 14 اسفند 1391, 16:13 عصر
از ریجستری ها استفاده کن

pedram.11
دوشنبه 14 اسفند 1391, 17:09 عصر
بنظر من بهترین روش ریختن اطلاعات توی یک کلاس و سریالایز کردن اونهاست، اینجا (http://barnamenevis.org/showthread.php?225030-%D8%B0%D8%AE%DB%8C%D8%B1%D9%87-%DA%A9%D9%84%D8%A7%D8%B3-%D8%AF%D8%B1-%D9%81%D8%A7%DB%8C%D9%84&highlight=%D8%B3%D8%B1%DB%8C%D8%A7%D9%84%D8%A7%DB% 8C%D8%B2)شاید به کارت بیاد

اینهم یکی خودم نوشتم واسه ذخیره و لود اطلاعات
100859

milad-engineer
دوشنبه 14 اسفند 1391, 17:23 عصر
از ریجستری ها استفاده کن

منظورتون از ریجستری ها همون ریجستری ویندوز است؟

milad-engineer
دوشنبه 14 اسفند 1391, 17:29 عصر
بنظر من بهترین روش ریختن اطلاعات توی یک کلاس و سریالایز کردن اونهاست، اینجا (http://barnamenevis.org/showthread.php?225030-%D8%B0%D8%AE%DB%8C%D8%B1%D9%87-%DA%A9%D9%84%D8%A7%D8%B3-%D8%AF%D8%B1-%D9%81%D8%A7%DB%8C%D9%84&highlight=%D8%B3%D8%B1%DB%8C%D8%A7%D9%84%D8%A7%DB% 8C%D8%B2)شاید به کارت بیاد

اینهم یکی خودم نوشتم واسه ذخیره و لود اطلاعات
100859
این نمونه ای که گذاشتی دقیقا همون چیزیه که من میخواستم ولی خیلی پیچیدست
میشه یه کتاب یا جزوه ای معرفی کنید یا خودتون توضیح بدید...

ممنون از جوابتون...

pedram.11
دوشنبه 14 اسفند 1391, 18:02 عصر
توی همین تالار فک کنم مطالب زیاد باشه، بسیار ساده هست دوبار کار کنید ساده میشه، فرض کن شما یک کلاس داری توش متغیر داری به صورت زیر:
public class Vars
{
public bool MainCheck;
public string MainTextBox = "";
public bool SettingCheck1;
public string SettnigText1 = "";
}
که MainCheck میتونه خاصیت Checked چک باکس و MainTextBox خاصیت تکست تکست باکس و ... باشه. برای ذخیره اطلاعات کنترل ها بعد از اینکه مقادیر کنترل هارو به متغیرهای کلاستون انتصاب دادید:
Vars vars = new Vars();
vars.MainCheck = checkBox1.Checked;
this.vars.MainTextBox = this.textBox1.Text;
کافیه با چن خط دستور این کلاس رو ذخیره کنید، روش کار هم به اینصورت هست:
System.IO.StringWriter sw = new System.IO.StringWriter();
System.Xml.Serialization.XmlSerializer xsr = new System.Xml.Serialization.XmlSerializer(typeof(Vars ));
xsr.Serialize(sw, vars);
System.IO.StreamWriter strmw = new System.IO.StreamWriter(path);
strmw.Write(sw);
strmw.Close();
sw.Close();
sw که یک StringWriter هست و اطلاعات رو درون یک string ذخیره میکنه
توی خط دوم یک XmlSerializer به اسم xsr و از نوع Vars (اینجا اسم کلاسمون Vars هست) معرفی کردم
خط بعدی هم اطلاعات کلاس رو توی sw به صورت string ذخیره میکنه، تا اینجا یعنی شما اطلاعات کلاس رو به صورت string دارین و میتونید در آدرسی(path) ذخیره و حتی اول Encode و سپس ذخیره کنید
-
برای لود دیتا هم تنها کافیه متن رو از مسیر path لود و با دستور Deserialize دوباره به کلاس تبدیل کنید:
Vars vars;
System.Xml.Serialization.XmlSerializer xsr = new System.Xml.Serialization.XmlSerializer(typeof(Vars ));
System.IO.TextReader tr = new System.IO.StringReader(System.IO.File.ReadAllText( path));
vars = (Vars)xsr.Deserialize(tr);
تا اینجا ما دوباره کلاسمون رو داریم، حالا کافیه مقادیر کلاسمون رو دوباره به مقادیر کنترلها انتصاب بدیم:
this.checkBox1.Checked = vars.MainCheck;
this.textBox1.Text = vars.MainTextBox;
اصل کار همین هست یک کلاس میسازیم برای ذخیره Serialize میکنیم و برای لود Deserialize میکنیم, اینکه پروژه کمی پیچیده شده بخاطر هدف شما بود که میخواستم عینا چیزی باشه که میخواهید و اونا دیگه جزئیات هستن.
موفق باشید

milad-engineer
دوشنبه 14 اسفند 1391, 18:09 عصر
دمت گرم خیلی خوب توضیح دادی گرفتم...
ممنون از وقتی که گذاشتی...

یه سوال دیگه اگر من بخوام سی شارپ رو خوب یاد بگیرم چه کاری یا کتابی رو توصیه می کنید؟

pedram.11
دوشنبه 14 اسفند 1391, 18:21 عصر
والا من خودم با یه کتاب شروع کردم و همینجا از دوستان یه چیزایی یاد گرفتم، من 2 سال پیش کتاب آقای قمی رو گرفتم و فقط هم نصفشو خوندم، بقیشو موقع نوشتن برنامه وقتی به مشکل برمیخوردم به همین کتاب رجوع میکردم یا از دوستان سوال میپرسیدم و یا این سوال قبلا مطرح شده بود، اینو بگم شما 100 تا کتاب هم داشته باشید اگه استفاده نکنید بدردتون نمیخوره اما اگه حتی یه کتاب داشته باشید و انقد بخونید آبش گرفته شه +++++ پشت کامپیوتر همه چیزو امتحان کنید موفق میشید-هرکسی نظر خودشو داره و من تنها کتابی که خوندم همین بود از لحظ بار علمی بنظرم خوبه و اصل کار رو آموزش میده، بعدش میتونید برید کتابای چند هزار صفحه ای بگیرید!
موفق باشد

milad-engineer
دوشنبه 14 اسفند 1391, 18:53 عصر
ممنون از راهنمایی ها تون
الان دارم روشی که گفتید رو امتحان می کنم انشالله که مشکلی پیش نیاد
ولی اگر مشکلی بود همینجا مطرح می کنم شاید یه روزی یک بنده خدایی هم این مشکل واسش پیش اومد حداقل اینجا رو بتونه پیدا کنه

باتشکر