6. Текстовые файлыКомпонентами текстовых файлов являются строки. Длина строки - 0-255 символов. Каждая строка завершается маркером строки, а файл - маркером конца файла. Для описания файловых переменных текстового типа используется зарезервированное слово text. Var instrl, instr2: text; dokulnent: text; Для работы с текстовыми файлами используются упомянутые выше функции и процедуры assign, rewrite, reset, close, read, readln, write, writeln, seekeof, однако имеются и специфические функции и процедуры: Append (fv) - открыть текстовый файл и установить указатель на маркер конца файла. Eoln (fv) - возвратить true, если указатель файла достиг маркера конца строки, в противном случае, возвратить значения false. Seekeoln(fv) - функция, аналогичная предыдущей, но указатель проходит все пробелы и знаки табуляции. возвращает true при достижении маркера конца строки. Seekeof(fv) - возвращает true, если указатель файла находится на маркере конца файла. Организация текстового файла производится по схеме: 1) объявляется файловая переменная текстового типа; 2) присваивается файлу имя (assign); 3) открывается файл (rewrite); 4) подготавливается строка - компонента для записи в файл; 5) записывается строка - компонента в файл (writeln); 6) повторяются п. 4, 5 столько раз, сколько нужно; 7) закрывается файл. Доступ к компонентам текстового файла: 1) присвоить файлу имя (assign); 2) открыть файл для чтения (reset); 3) прочитать компоненту-строку (readln); 4) обработать компоненту-строку (например вывести на экран); 5) повторить п. 3, 4 столько раз, сколько нужно. 6) закрыть файл (close); Расширение текстового файла производится путем добавления в конец файла компонент-строк: 1) присвоить имя файлу (assign); 2) установить маркер на конец файла (append); 3) подготовить строку для записи; 4) записать строку (writeln); 5) повторить нужное количество раз п. 3, 4. 6) закрыть файл (close). Замечание. При записи файлов прямого и последовательного доступа, созданных пользователем, содержимое компонент упаковывается, и поэтому посмотреть их в vc или nc по f3 или f4 нельзя, а текстовый файл не упаковывается, и его можно просмотреть. procedure sozdt; Begin writeln('дайте имя создаваемому текстовому файлу'); readln(filename); assign(stro,filename); rewrite(stro); while true do Begin writeln('напишите содержимое строки'); readln(s); if s='zzz' then {'zzz' - признак окончания ввода } Begin close(stro); exit; end; writeln(stro,s); end;end; procedure obrt; Begin writeln('дайте имя обрабатываемого файла'); ; readln(filename); assign(stro,filename); reset(stro); repeat readln(stro,s); writeln(s); until seekeof(stro); close(stro); exit; end; procedure rasht; Begin writeln('укажите имя корректируемого файла'); readln(filename); assign(stro,filename); append(stro); while true do Begin writeln('введите строку'); readln(s); if s='zzz' then Begin close(stro); exit; end; writeln(stro,s); end; end; Program Prim51; Type dlina=string[60]; Var stro:text; s:dlina; reg:char; filename:string[12]; {$i c:\turbo\sozdt.pas} {$i c:\turbo\obrt.pas} {$i c:\turbo\rasht.pas} Begin while true do Begin writeln('укажите режим'); writeln('1: создание, 2: вывод на экран, 3: расширение, 4: выход'); readln(reg); case reg of '1': sozdt; '2': obrt; '3': rasht; '4': halt else writeln('повторите номер режима'); end;end;end. |