Уважаемые, столкнулся с такой непростой задачкой, как работа с текстовым файлом сложной структуры. Нужно считать с него коды станций, номера платежей, суммы и коды статей. И дату. Желательно в табличку запихнуть для удобства работы. Единственный вариант, который приходит в голову, это построчное считывание и анализ. Подскажите какими методами такое можно провернуть?
Решил просто перебирать тупо строки и писать в StringGrid. По задумке должно было писать все строки начинающиеся с символа "|", но чет не очень вышло, пишет только три первых столбца и заполняет чушью.
procedure TForm4.Button5Click(Sender: TObject); var F:TextFile; //файл fName: String[100]; // имя файла buf: String[80]; //буфер для чтения строк i:integer; //шагалка stroka:string; //строка year,mounth:string; //месяц и год введение пользователем data1,data2:string; //дата считываемая и отображаемая
begin fName:=Form4.Edit1.Text; //забираем путь AssignFile(f,fName); // try Reset(F); // открыть для чтения except on EInOutError do begin ShowMessage('Ошибка доступа к файлу'+fName); exit; end end;
while not EOF(f) do begin for i := 0 to StringGrid1.RowCount - 1 do begin Form4.StringGrid1.Cells[0,i]:=copy(buf,9,16); (имя) Form4.StringGrid1.Cells[1,i]:=copy(buf,21,27);(код) Form4.StringGrid1.Cells[2,i]:=copy(buf,27,106);(код) Form4.StringGrid1.Cells[3,i]:=copy(buf,107,120);(сумма) Form4.StringGrid1.Cells[4,i]:=copy(buf,122,127);(статья) //чтение из файла
begin readln(f,buf); // прочитать строку из файла if buf[1]='|' then end; end; if buf[27]='З' then begin Form4.Edit2.Text:=copy(buf,30,42); //забрал дату end; end; CloseFile(f); // закрыть файл
begin Form4.ComboBox1.Text:=mounth; Form4.Edit3.Text:=year; data1:=mounth + ' ' + year; Form4.Edit3.text:=data2;