PDA

View Full Version : سوال: مشکل در انتقال درست اطلاعات از فایل متنی به TextBox



Black Captain
جمعه 07 خرداد 1395, 23:31 عصر
سلام دوستان. می خواستم لطف کنید تو تکمیل یه برنامه در #C کمک کنید.

من قراره یه برنامه بنویسم و به این شکل هست که یه سری فایل نوت پد (حدودا 300 عدد) وجود داره که هر کدوم حاوی اطلاعات سخت افزاری یک سیستم هست (که با استفاده از نرم افزار مخصوص دریافت اطلاعات سخت افزاری سیستم تهیه شدند)، جزئیات اطلاعات سخت افزاری این نوت پدها باید از طریق برنامه نوشته شده در #C وارد بانک اطلاعاتی که در SQL Server ایجاد شده، شود.

حقیقت این هست که من با #C اصلا آشنایی ندارم، برای کارآموزی فوق دیپلم با کلی دردسر و رفت و آمد در نهایت تونستم به یه شرکت دولتی برم، هدف این بود که یه چیزی یاد بگیریم اما الان نه تنها چیزی یاد نگرفتم بلکه از درس های دیگه هم افتادم و چیزی هم به پایان زمان کارآموزی نمونده و گفتند حتما باید برنامه رو تحویل بدم تا کارآموزی رو تایید کنند.

به هر ترتیب که بود حدودا فک کنم 80% برنامه رو نوشتم، اما وقتی فکر می کردم برنامه کامل شده متوجه مشکل جدیدی شدم.

من فکر می کردم تمامی فایل های نوت پد یکسان هستند اما متوجه شدم که اینطور نیست، برخی سیستم های مثلا دو هارد، دو پردازنده، دو گرافیک و ... دارند و به همین خاطر نوشتن کد بر اساس ترتیب یک فایل نوت پد، باعث شده که اطلاعات خیلی از فایل ها به درستی وارد تکست باکس برنامه نشه، مثلا یک فایل مشخثات پردازنده میره بجای مشخصات گرافیک و در کل قاطی میکنه.

به من گفتند که باید یک شرط نوشته بشه که هر جا مثلا عنوان "CPU" قرار گرفت، محتویات خطوط بعدیش وارد تکست باکس بشه تا جایی که مثلا به "GPU" که پایین همون "CPU" هست رسید، انتقال متوقف بشه، به این شکل برای تمام نوت پدها، انتقال به درستی انجام میشه چون همه عنوان های "CPU" ، "GPU" ، "HDD" و ... یکسان هست.

ممنون میشم کمکم کنید و این شرط رو اگر ممکنه اضافه کنید، کلافه شدم تو این چند روز انقدر سرچ کردم و چیزی پیدا نشد.

کدهای برنامه ای که نوشتم به این شکل هست:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Damghan
{
public partial class Form1 : Form
{
string ln, cpu, ram, main, gpu, hdd, opd, vc, a;
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'dataSet12.Table_2' table. You can move, or remove it, as needed.
this.table_2TableAdapter.Fill(this.dataSet12.Table _2);
// TODO: This line of code loads data into the 'dataSet1.Table_2' table. You can move, or remove it, as needed.
this.table_2TableAdapter.Fill(this.dataSet1.Table_ 2);

}

private void button2_Click(object sender, EventArgs e)
{
OpenFileDialog op = new OpenFileDialog();
op.Filter = "Text Files (.txt)|*.txt";
op.FilterIndex = 1;
if (op.ShowDialog() == DialogResult.OK)
{
txtpath.Text = op.FileName;

System.IO.StreamReader rd = new System.IO.StreamReader(op.FileName);

// read a line of text
rd.ReadLine();
rd.ReadLine();
ln = rd.ReadLine();
cpu = rd.ReadLine();
cpu = rd.ReadLine();
textBox5.Text = ln.Substring(3, ln.Length - 3);
textBox3.Text = cpu.Substring(3, cpu.Length - 3);
ram = rd.ReadLine();
ram = rd.ReadLine();
ram = rd.ReadLine();
textBox11.Text = ram.Substring(3, ram.Length - 3);
main = rd.ReadLine();
main = rd.ReadLine();
textBox7.Text = main.Substring(3, main.Length - 3);
gpu = rd.ReadLine();
gpu = rd.ReadLine();
gpu = rd.ReadLine();
textBox6.Text = gpu.Substring(3, gpu.Length - 3);
hdd = rd.ReadLine();
hdd = rd.ReadLine();
hdd = rd.ReadLine();
textBox4.Text = hdd.Substring(3, hdd.Length - 4);
opd = rd.ReadLine();
opd = rd.ReadLine();
textBox8.Text = opd.Substring(3, opd.Length - 3);
vc = rd.ReadLine();
vc = rd.ReadLine();
textBox9.Text = vc.Substring(3, vc.Length - 3);
// close the stream
rd.Close();
}
}

private void button1_Click(object sender, EventArgs e)
{
DataSet1TableAdapters.Table_2TableAdapter ta = new DataSet1TableAdapters.Table_2TableAdapter();
DataSet1 ds;
ta.InsertQuery(textBox5.Text.ToString(), textBox2.Text.ToString(), textBox6.Text.ToString(), textBox8.Text.ToString(), textBox10.Text.ToString(), textBox11.Text.ToString(), textBox7.Text.ToString(), textBox3.Text.ToString(), textBox9.Text.ToString(), textBox1.Text.ToString(), textBox4.Text.ToString(), textBox12.Text.ToString(), textBox14.Text.ToString(), textBox13.Text.ToString(), textBox15.Text.ToString());
}
}
}

تصویر نحوه انتقال اطلاعات:

140581

فایل دیگر و انتقال اشتباه اطلاعات (سه تکست باکس آخر):
140582

نمونه فایل نوت پد:

http://s7.picofile.com/file/8253245268/ga22011842_31645.rar.html

تصویر:

140583

تصویر طراحی برنامه:

140584

نکته: در هر نوت پد، فقط اطلاعات قسمت Summary باید انتقال داده بشه اطللاعات پایین تر مهم نیست.

پیشاپیش ممنون.

Black Captain
یک شنبه 09 خرداد 1395, 10:34 صبح
دوستان هیچ نظری ندارند؟؟
خواهشا کمک کنید.

alireza4474
یک شنبه 09 خرداد 1395, 12:09 عصر
سلام
ببین من یه پیشنهاد دارم
اگه این فایل متنی رو کسی قرار نیست ببینه یعنی کاربرد این فایل متنی اینه که تو برنامه تو استفاده بشه و کاربر قرار نیست این متن رو بخونه بیا و همه اطلاعات رو توی یه خط بنویس و از یه سپریتور(separator) مناسب استفاده کن و اطلاعات رو از هم جدا کن این جوری برای استفاده از فایل متنی هم کارت خیلی راحت میشه و واقعا دلیل این به هم ریختگی اطلاعات رو نمیدونم اما اینکار که من گفتم رو انجام بده شاید درست شد
اگه سوالی تو همین زمینه داشتی بگو

Black Captain
یک شنبه 09 خرداد 1395, 19:39 عصر
سلام
ببین من یه پیشنهاد دارم
اگه این فایل متنی رو کسی قرار نیست ببینه یعنی کاربرد این فایل متنی اینه که تو برنامه تو استفاده بشه و کاربر قرار نیست این متن رو بخونه بیا و همه اطلاعات رو توی یه خط بنویس و از یه سپریتور(separator) مناسب استفاده کن و اطلاعات رو از هم جدا کن این جوری برای استفاده از فایل متنی هم کارت خیلی راحت میشه و واقعا دلیل این به هم ریختگی اطلاعات رو نمیدونم اما اینکار که من گفتم رو انجام بده شاید درست شد
اگه سوالی تو همین زمینه داشتی بگو

دوست عزیز من اصلا منظورتون رو متوجه نشدم.

Black Captain
سه شنبه 11 خرداد 1395, 00:07 صبح
واقعا تو این فروم هیچ کس نیست که بتونه کدهای بخشی که اشاره کردم رو بنویسه؟ انقدر پیچیده هست؟

اگر جای دیگه ای هست که می تونم به پاسخم برسم ممنون میشم از طریق پیام خصوصی معرفی کنید.