![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Доброго времени суток!
Господа, помоготе кто может. Возникла следующая задача: есть определенное количество файлов, содержащих текст в DOS кодировке, текст представлен в виде таблицы, поля не имеют разделителей, есть только фиксированная длина полей. Необходимо создать пакетную обработку этих файлов с целью определить значение определенного поля, котрое может быть либо ДА либо НЕТ и в зависимости от того какое значение имеет это поле, копируем строки с ДА в файл 1.csv, а с нет в 2.csv. структура файла: поле1 поле2 поле3 ПолеДаНет поле5 Спасибо! |
|
#2
|
||||
|
||||
|
На кой вам выводить каждое значение? Не проще посчитать сколько всего было Да/Нет? Вот так устроит?
Код:
var
fi: TSearchRec;
f: TextFile;
Res: record Yes,No: Integer; end;
FPos,FLen: Integer;
Path, s: String;
begin
FPos := 50; //Позиция поля в строке
FLen := 3; // Длина поля
Res.Yes := 0; Res.No := 0;
Path := ExtractFilePath(ParamStr(0));
if FindFirst(Path+'*.csv', faAnyFile, fi) = 0
then repeat
AssignFile(f, Path + fi.Name);
Reset(f);
while not Eof(f)
do begin
ReadLn(f, s);
if Copy(s, FPos, FLen) = 'ДА'
then Inc(Res.Yes);
if Copy(s, FPos, FLen) = 'НЕТ'
then Inc(Res.No);
end;
CloseFile(f);
until FindNext(fi) <> 0;
FindClose(fi);
ShowMessage(Format('Да:%d, Нет:%d',[Res.Yes, Res.No]));
end; |
|
#3
|
|||
|
|||
|
Спасибо большое!!!
|