عرض ادب خدمت تمام بزرگواران
یه سوال، چطور میشه یک شی که دارای فیلدهای مختلفی هست در یک فایل تکس ذخیره کرد، و بعد از بازیابی فیلدها جداگانه بازیابی و در مکان های مورد نظر قرار گیرند؟
از راهنمایی شما سپاس گزارم
عرض ادب خدمت تمام بزرگواران
یه سوال، چطور میشه یک شی که دارای فیلدهای مختلفی هست در یک فایل تکس ذخیره کرد، و بعد از بازیابی فیلدها جداگانه بازیابی و در مکان های مورد نظر قرار گیرند؟
از راهنمایی شما سپاس گزارم
سوالتو اصلا نفهمیدم چیه بخدا
عذر میخوام ....
من یه شی دانشجو دارم که مشخصاتش مث نام نام خانوادگی و غیره ست ...
اینا رو تو برنامه از کابر می گیره در تکس باکس های مختلف، و فقط نام و نام خانوادگی رو در لیست باکس نمایش می ده، حالا می خوام این اطلاعات رو در یک فایل تکس ذخیره کنم، و بازیابی کنم ...
واضح نیست؟
راه زیاده.
ذخیره در فایل معمولی ، xml ، ذخیره از طریق BinaryFormatter ....
همه قبلا بحث شده.
حق با شماست، مشکل کار من چیه ؟
این برای سیو
private void SaveSTD_Click(object sender, EventArgs e)
{
FileStream str = new FileStream("C:\\test.txt", FileMode.Create);
StreamWriter write = new StreamWriter(str);
foreach (Student cr in Stdbinding)
write.WriteLine(cr);
write.Close();
}
اینم یه تابع است که توی فرم لود فراخوانی میشه
private void loadStudent()
{
if (File.Exists("C:\\test.txt"))
{
string matn = File.ReadAllText("C:\\test.txt");
string[] kalame = matn.Split('@');
foreach (string k in kalame)
listSTD.Items.Add(k);
}
}
ضمنا من فقط از این طریق باید ذخیره سازی رو انجام بدم
چرا فقط از این طریق؟
اول از همه سلام به شما و محمد استاد گلم و با اجازه
کدات که درست به نظر میان و من ایرادی نمی بینم ولی یه چک کنید که رو درایو c حق نوشتن دارید(سطح دسترسی )
خوب اگه مجبورید که حتما با فایل های txt کار کنید و در ضمن دانت 4 به بالا کار می کنید من به شما textreader و textwriter پیشنهاد می کنم که خیلی کارو راحت کردن اصلا واسه این کار خلق شدن
موفق باشید
فرمایش استادمون هست، گفتن از این طریق کار کنید یه فایل تکس بسازید و کل اطلاعات دانشجو رو درونش ذخیره کنیدو در آخر هر اطلاعات یک علامت قرار بدین مثلا @ که موقع باز یابی بتونین ازین طریق اطلاعات رو از هم تمییز دهید، خودم از طریق باینری انجام دادم ولی اینو نمیتونم .
خب میبایست خصوصیات رو به هم بچسبونید و ذخیره کنید.
write.WriteLine(cr.FirstName + "@" + cr.LastName + ...);
موقع بازیابی هم بر جسب کاراکتر @ جداکنید.(در مورد Split جستجو کنید).
سپاس استاد گرانقدر
من همین کارو کردم تو لود شدن فایل تکسه که مشکل دارم، میخوام با لود برنامه مقادیر قبلی در لیست باکس باشن ولی نیست...
ذخیره رو انجام میده...
و یه سوال دیگه اینکه آیا با این روش ذخیره کردن، مقادیر قبلی ذخیره سازی از بین میره؟
من بازم می گم روش کارت کاملا درست هست(شاید یه چیزیو من نمی بینم )
به همین دلیل من یه نمونه از این روش برات درست کردم یه نگاه بنداز تا شاید خودت بتونی مشکل و حل کنی موفق باشی
textwriter.rar
بسیار سپاس گزارم، خب پس باید از چه روشی استفاده کنم که اطلاعات قبلم پاک نشه؟ از روش append?
برنامه رو خط به خط اجرا کردم، عمل سیو درست انجام میشه، و در تابع loadStudent هم میره اما وقتی به listSTD.Items.Add(k) میرسه یه بار فرمو نشون میده بعد دیگه ادامه نمیده....
باید برای هر خط split انجام بدی:
List<Student> lst;
private void loadStudent()
{
if (File.Exists("C:\\test.txt"))
{
lst = new List<Student>();
string[] matn = File.ReadAllLines("C:\\test.txt");
foreach (string line in matn)
{
string[] kalamat = line.Split('@');
Student s = new Student();
s.id = Convert.ToInt32(kalamat[0]);
s.FirstName = kalamat[1];
s.LastName = kalamat[2];
lst.Add(s);
listSTD.Items.Add(s.FirstName + " " + s.LastName);
}
}
}
چرا از دیتا بیس استفاده نمیکنین؟