Текстовые файлы

Текстовые файлы состоят из символьных строк переменной длины. Каждая строка завершается специальной комбинацией, называемой «конец строки». Комбинация «конец строки» состоит из двух символов: «перевод каретки» (ASCII-код #13) и «перевод строки» (#10). Завершается текстовый файл символом «конец файла» (#26).

Описание текстового файла осуществляется объявлением переменной типа Text:

var файловая_переменная: Text;

Чтение из текстового файла осуществляется операторами Read и ReadLn. Чтобы прочитать данные из файла, в качестве первого параметра указывают имя файловой переменной, а далее через запятую перечисляются переменные, в которые осуществляется чтение данных из файла. В текстовом файле данные хранятся в строковом виде. Однако, если элемент данных может быть преобразован в число, это преобразование осуществляется автоматически при вводе в числовые переменные. Элементы числовых данных в строках текстового файла разделяются пробелами или символами табуляции. Если строка файла закончилась, а состоящий из числовых или символьных переменных список ввода в операторе Read не исчерпался, то ввод продолжается со следующей строки. При вводе данных из текстового файла в символьные переменные элементы данных не разделяются. Если в списке данных после числовой переменной идет строковая, то пробел, который следует после числового значения в файле, считывается в строку (это же справедливо и при считывании в символьную переменную).

Отличие операторов Read и ReadLn при чтении из текстовых файлов состоит в том, что оператор ReadLn, поместив значение в последнюю переменную списка ввода, переходит на начало следующей строки, не считывая оставшиеся в строке данные. С другой стоны, оператор Read остается готовым считывать данные со следующей позиции текущей строки. Так, предположим, что в текстовом файле f имеются две строки:

1 -2
4

В этом случае два оператора Read(f,m); Read(f,n); поместят в целочисленные переменные m и n соответственно значений 1 и -2, а два оператора ReadLn(f,m); ReadLn(f,n); считают значения 1 и 4.

Пример. В текстовом файле f.txt через пробел и записаны целые числа. Переписать в файл f1.txt из файла f.txt все числа, за исключением максимальных (предполагается, что их может быть несколько).

var f,f1: Text;
    a,max: LongInt;
    flag: Boolean;
begin
  Assign(f,'f.txt');
  Reset(f);
  while not Eof(f) do begin
    Read(f,a);
    if a>max then
      max := a;
  end;
  Assign(f1,'f1.txt');
  Rewrite(f1);
  Reset(f);
  while not Eof(f) do begin
    Read(f,a);
    if a<>max then
      WriteLn(f1,a);
  end;
  Close(f);
  Close(f1);
end. 

В примере файл f.txt прочитывается два раза. Первый раз для определения максимального числа, второй раз — для считывания чисел и их записи во второй файл. Данный алгоритм используется, если максимальных чисел в файле несколько.

Особенностью текстовых файлов является то, что они являются файлами последовательного доступа: нельзя прочитать какой-либо элемент текстового файла, не прочитав все предшествующие элементы. Аналогично нельзя записывать информацию в текстовый файл произвольным образом, писать в него можно только последовательно.

Комментарии

Помогите пожалуйсто

Дан текстовый файл. Подсчитать в нем общее количество символов, преобразовать эту величину к размеру файла в килобайтах, вывести также количество пробелов в файле и количество строк. Вывести на экран номер позиции в файле, начиная с которой введенная с клавиатуры строка в нем встречается, и соответствующее сообщение, если этой строки нет.

"С другой СТОНЫ, оператор

"С другой СТОНЫ, оператор Read остается готовым считывать данные со следующей позиции текущей строки. Так, предположим, что в текстовом файле f имеются две строки:"
возможно СТОРОНЫ?

Помогите пожалуйста. Нужно написать программу, которая удаляет в

Помогите пожалуйста. Нужно написать программу, которая удаляет выбранное количество элементов строки файла от выбранной позиции. Т.е. сделать программу функции "delete" не используя ее.