PDA

View Full Version : خوندن سطر به سطر تکست فایل و انجام محاسبات و درنهایت ذخیره نتایج محاسبه بطور سطر به سطر در فایل تکست



ghahremanimehdi
جمعه 10 تیر 1390, 02:58 صبح
لود کردن فایل متنی در برنامه-خواندن سطر به سطر داده های فایل متنی- انجام محاسبات مربوط به هرسطر و در نهایت ذخیره مقدار محاسبه شده متعلق به هر سطر در یک فایل متنی دیگر.
مثلا فایل تکست زیر رو دارم(در هر سطر آن 3 عدد ذخیره شده که هر عدد با کاما از هم جدا شده) :



5,6,8
2,3,7
4,1,8
3,6,2



حال میخوام روی فرم یک دکمه قرار بدم تا توسط اون فایل تکست موردنظر browse و انتخاب بشه و برنامه جمع اعداد هر سطر را محاسبه کرده و نتیجه را در یک فایل متنی دیگر بطور سطر به سطر ذخیره کند . مثلا برای مثال فوق نتایج به شکل زیر در فایل تکست ذخیره شود :



19
12
13
11



حالا مشکلم اینه که چطور فایل رو browse کنم ؟ بعد چطور سطر به سطر اعداد خونده بشن و بعد محاسبات انجام بشه و در یک تکست فایل دیگه ذخیره بشه ؟ (زبان هم سی شارپ)

mmd2009
جمعه 10 تیر 1390, 04:28 صبح
با سلام

ببین دوست عزیز این چیزی که شما میگید نوشتنش خیلی راحته و من بهت توضیح میدم چیکار بکنه که خودت بنویسی و کیفش رو خودت ببری :لبخند:

ببین در قسمت زیر :


5,6,8
2,3,7
4,1,8
3,6,2



شما میتونی یا اینطوری ذخیره بکنی فایل رو :


5,6,8
2,3,7
4,1,8
3,6,2



یا اینطوری :


5,6,8;
2,3,7;
4,1,8;
3,6,2;


بعدش که فایل متنی رو به هر طریقی که خواستی ذخیره کن و بعدش نوبت میرسه به خوندن این فایل و انجام محاسبات که شما موقع خودند کافیه تمام فایل مورد نظر خودت رو بذاری تو یک رشته و بشکافی (split) فایل رو ابتدا به صورت سطر به سطر که میتونی هم از شکاف گذاری با استفاده از کاراکتر Enter یا کاراکتر ; استفاده بکنی و بعدش اینجاست که مثلا در مثال بالا شما حالا 4 سطر داری و حالا اینبار نوبت به شکاف گذاری با استفاده از کاراکتر , هستش اینبار کافیه با استفاده از دستور Forech کل رشته رو کاراکتر به کاراکتر بخونی و سپس تبدیل کنی به int اون کاراکتر رو و ذخیرهش بکنی و یک متغیر و به همین طریق وقتی تو کل متغیر یا ارایه 4 سطر رو خوندی و محاسبات رو انجام دادی این متغیر رو بصورت رشته درون فایل ذخیره کن

امیدوارم توضیحات کامل بوده باشه

خودت استارت بزن کارو من هم کمکت میکنم

موفق باشی

mmd2009
جمعه 10 تیر 1390, 05:05 صبح
میتونی به این سبک هم عمل بکنی از بیکاری نشستم اینو برات نوشتم :لبخند:


using (OpenFileDialog ofd = new OpenFileDialog())
{
try
{
ofd.Filter = "Text Files (*.txt)|*.txt";
if (ofd.ShowDialog() == DialogResult.OK)
{
List<string> Records = new List<string>(File.ReadAllText(ofd.FileName).Split(';'));
foreach (string Record in Records)
{
int SumNumber = new int();
this.lstRecord.Items.Add(Record);

foreach (string Number in Record.Split(','))
{
SumNumber = SumNumber +int.Parse(Number);
}
this.lstSumRecord.Items.Add(SumNumber);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

ghahremanimehdi
یک شنبه 12 تیر 1390, 03:14 صبح
ممنون بابت راهنمایی فقط 3 تا سوال داشتم : این< List<string چطور کلاسی هست ؟ و چکار میکنه ؟lstSumRecord عضو کدوم کلاس هست ؟ و عضو Parse چکار میکنه ؟

Felony
یک شنبه 12 تیر 1390, 06:47 صبح
ممنون بابت راهنمایی فقط 3 تا سوال داشتم : این< List<string چطور کلاسی هست ؟
کلاس نیست ، Generic هست .


lstSumRecord عضو کدوم کلاس هست ؟
کد رو یه بار بخونید ، اون یک ListBox هست که روی فرم قرار داده شده !


عضو Parse چکار میکنه ؟
متد Parse مربوط به int یک رشته عددی رو به عدد تبدیل میکنه .

ghahremanimehdi
یک شنبه 12 تیر 1390, 22:23 عصر
کلاس نیست ، Generic هست .




این کد چکار انجام میده ؟
List<string> Records = new List<string>(File.ReadAllText(ofd.FileName)

Felony
یک شنبه 12 تیر 1390, 23:48 عصر
این کد چکار انجام میده ؟
List<string> Records = new List<string>(File.ReadAllText(ofd.FileName)
یک String List با نام Records میسازه و تمام محتوای فایل انتخاب شده رو داخلش میریزه .