Kabanets2005
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору AnsiString FileName; FileName=FileListBox1->FileName; char *file_head="X_Value\t\t\t\t\t\tComment\0"; //так заканчивается заголовок файла char check_line[300]="", x_scale[50]; int row_number=0, col_number=0, //число столбцов таблицы в файле i=0, //номер столбца в таблице при заполнении j=0, //номер строки в таблице при заполнении head_pos=0; //положение конца заголовка файла using namespace std; ifstream FILE0; FILE0.open(FileName.c_str()); //открываем файл if (FILE0!=NULL) { //здесь ищем строку, которой заканчивается //заголовок while (strcmp(check_line, file_head)!=0) //сравниваем искомую строку с читаемой FILE0.getline(check_line, 300); //читаем строку в check_line head_pos=FILE0.tellg(); //когда нашли - запоминаем положение //курсора delete check_line; //освобождаемся от check_line //теперь проверяем кол-во столбцов в таблице //по кол-ву табов FILE0.getline(check_line, 200); //считываем одну строку и далее сканируем ее for (i=0; i<100; i++) //достаточно сканировать 100 символов строки if (check_line[i]=='\t') //само сканирование строки на наличие \t' col_number++; Table->ColCount=col_number; //устанавливаем макс.число столбцов таблицы FILE0.seekg(head_pos); //возвращаемся в “запомненное'' положение в файле while (FILE0.eof()!=true) { j++; for (i=0; i<13; i++) //здесь 13 выбрано наугад... почему-то с этим числом { //определенный файл читается нормально FILE0>>x_scale; //берем x_scale из потока и заносим ее в таблицу Table->Cells[i][j]=x_scale; } if (Table->RowCount<j) Table->RowCount++; //если число строк в таблице мало – увеличиваем его } } FILE0.close(); |