Формат файла считаем таким:
Цитата:
[Header]
‡ Є §;19;Џђ.‡-00077;9;?‚ЂЌЋ‚ Ђ.;
‡ Є §;29;Џђ.‡-00077;10;?‚ЂЌЋ‚ Ђ.;
[Body]
‡ Є §;39;Џђ.‡-00077;11;?‚ЂЌЋ‚ Ђ.;
‡ Є §;49;Џђ.‡-00077;12;?‚ЂЌЋ‚ Ђ.;
Тогда делаем так:
Код:
f.TEXTMODE(TRUE);
f.OPEN(CommonDlgMgt.GetPath + CommonDlgMgt.GetFileName);
f.CREATEINSTREAM(StreamInObj);
i := 0;
gheader:=FALSE; //новая переменная
WHILE NOT (StreamInObj.EOS()) DO BEGIN //читаем построчно.
StreamInObj.READTEXT(buffer);
i+= 1;
CASE buffer OF // в зависимости от значения переменной buffer делаем следующие действия
'[Header]'::gheader:=TRUE; //если хидер, то присваиваем переменной gheader значение Да
'[Body]'::gheader:=FALSE //если началась секция боди, то присваиваем переменной gheader значение Нет
ELSE //во всех остальных случаях (т.е. читаются строки с данными) производится вставка в таблицы
IF gheader THEN BEGIN //в заголовок
//инициализация новой записи
rDocHeader.POLE1:=Explode(buffer,1);
rDocHeader.POLE2:=Explode(buffer,2);
...
rDocHeader.POLEN:=Explode(buffer,N);
//вставка записи в таблицу
END ELSE BEGIN //в табличную часть
//инициализация новой записи
rDocLine.POLE1:=Explode(buffer,1);
rDocLine.POLE2:=Explode(buffer,2);
...
rDocLine.POLEM:=Explode(buffer,M);
//вставка записи в таблицу
END;
END;
f.CLOSE();