Есть ли лучший способ и могу ли я ускорить его? (Файл dat без разделителей в виде сетки)
Я новичок в C#, но не программирую. Мне было предложено прочитать в файле .dat, который имеет определенную длину записи, но не имеет конца записи или разделителей полей. Файл не будет редактироваться, но должен быть отсортирован по каждому полю. Файл загружается при открытии формы, поэтому это первое, что видит пользователь.
Что я уже пробовал:
I chose to try the datagrid view. Also, I've never made a datagrid view before. I opted to play with the dat file using a sub-string initially. First, I read the sub-strings into a record array, then tried to add the array with a loop. This works beautifully - for the first record. When I loop, I get nothing but a nice heavy bit of processing. Next, I created a CSV separated line using the substrings, then split it to add to the table. Same thing. Works great for first record - loop and more than 4 minutes pass (approx. 1500 records in dat file) Should I approach it with a data connection? and if so, could you provide me with a link to where I can research it? I learn better by doing and playing with examples :)
private void Form1_Load(object sender, EventArgs e) { string inFile = "OH-PSF.DAT"; //string[] record = new string[2000]; string strLine; using (System.IO.StreamReader sr = new System.IO.StreamReader(inFile)) { string filetext = sr.ReadToEnd(); //read in the file //int rowCount = 0; for (int x = 0; x < filetext.Length; x++) { // while (x < 600) { string data1 = filetext.Substring(x, 9); x = 9;//next=index where next ss should start string data2 = filetext.Substring(x, 10); x = x + 10; //10=currently read field size string data3 = filetext.Substring(x, 2); x = x + 2; string data4 = filetext.Substring(x, 28); x = x + 28; string data5 = filetext.Substring(x, 20); x = x + 20; string data6 = filetext.Substring(x, 2); x = x + 2; string data7 = filetext.Substring(x, 20); x = x + 20; string data8 = filetext.Substring(x, 6); x = x + 6; string data9 = filetext.Substring(x, 7); x = x + 7; strLine= data1 + "," + data2 + "," + data3 + "," + data4 + "," + data5 + "," + data6 + "," + data7 + "," + data8 + "," + data9; string[] strArray = strLine.Split(','); strArray = strLine.Split(','); dataGridView1.Rows.Add(strArray); //dataGridView1.Rows.Add(record[0], record[1], record[2], record[3], record[4], record[5], record[6], record[7], record[8]); } } }//ends form 1 load