PDA

View Full Version : سوال: ذخيره كردن عدد در فايل متني؟ (لطفا جواب بدين)



vandermond
شنبه 16 خرداد 1388, 18:36 عصر
من ميخوام يك برنامه داشته باشم كه رسيد چاپ ميكنه. هر رسيدي كه چاپ ميكنه بايد يك شماره رسيد داشته باشه(به ترتيب از 1 تا ...)؛ ولي اين برنامه هميشه باز نيست و مثلا كامپيوتر خاموش كه بشه بعدا هم بايد اين شماره ها رو ادامه بده. توي C (غير ويژوال) يادمه از Intfp و ... استفاده ميشد ولي با C# نميدونم چه طور اين عدد رو تو يك فايل ذخيره كنم؟ اگه ميشه بدون ذخيره كردن تو فايل هم انجام بشه لطفا بگيد.

Open-Source
شنبه 16 خرداد 1388, 20:26 عصر
این یه نمونه کد هستش که عددی در فایل ذخیره میکنه و بعد کل فایل را در یک لیست باکس لود میکنه:


////////////////////////////
using System.IO;
//Add//////////////////////
StreamWriter sr = new StreamWriter("a.txt", true);
sr.WriteLine("عدد مورد نظر");
sr.Close();
//List////////////////////
StreamReader sr = new StreamReader("a.txt");

while (!sr.EndOfStream)
{
listBox1.Items.Add(sr.ReadLine() + " , " + sr.ReadLine() + " , " + sr.ReadLine() + " , " + sr.ReadLine());
}

Reza_Yarahmadi
شنبه 16 خرداد 1388, 21:52 عصر
میتونید هر رسید رو توی یک خط ذخیره کنید. قبل از هر بار ذخیره اول تعداد کل خطوط فایل رو بدست بیارید( که همون تعداد رسیدهاست) و برای شماره رسید جدید یکی به تعداد کل اضافه کنی و ...

vandermond
یک شنبه 17 خرداد 1388, 21:50 عصر
چه طور تعداد خط ها رو بشمارم؟ من كدي كه جناب اپن-سورس فرمودن (دستشون درد نكنه) گذاشتم ولي به قسمت EndOfStream گير ميده. من پاكش كردم. ولي الان كه اجرا ميكنم هر دفعه خط اول فايل رو ميخونه و هميشه همون عمليات رو انجام ميده و همون نتيجه رو ميده.

Reza_Yarahmadi
یک شنبه 17 خرداد 1388, 23:42 عصر
روشهای زیادی واسه این کار وجود داره. میتونید خط به خط فایل رو تا به آخر بخونید و هر بار که یک خط رو خوند شمارنده شما یک واحد اضافه بشه، میتونید از FileStream استفاده کنید و ...
من خودم چون با String راحتتر میتونم کار کنم از خاصیتهای اون استفاده کردم. احتمالا روشهای مناسبتری هم وجود داره!


int i = 0;
string AllFileText;
string[] Receipts;

StreamReader sr = new StreamReader(@"C:\Temp.txt");
AllFileText = sr.ReadToEnd();
sr.Close();

Receipts = AllFileText.Split('\n');
i = Receipts.Length;

StreamWriter SW = new StreamWriter(@"C:\Temp.txt");
for (int j = 0; j < Receipts.Length - 1; j++)
SW.WriteLine(Receipts[j]);

SW.WriteLine(i + " Your Text Receipt");
SW.Close();