| >end; {while} { конец цикла счета столбцов }
| > Reset( f ); { возврат на 1-ю позицию в файле }
| >{ ... и повторение чтения, уже зная число столбцов }
| END.
Рис. 12.6
Существует разновидность функции EOLn без параметров. В этом случае считается, что действие ее относится к стандартному файлу Input, т.е. вводу с клавиатуры. Здесь функция EOLn возвращает True не перед, а после прохождения признака конца строки: сразу после нажатия клавиши ввода. Более того, от EOLn без параметра не дождетесь значения False. Она «подвешивает» программу и возвра-
- 237 -
щает управление следующему оператору только после нажатия ввода. В руководстве языка приводится способ организовать паузу до нажатия ввода:
WriteLn(EOLn);
12.6.1.5. Функция SeekEOLn( VAR f: Text): Boolean.Эта функция является «ближайшей родственницей» функции EOLn (f). Файл f должен быть текстовым и открытым для чтения. Функция возвращает значение True, если до конца строки (символ #13) или конца файла (символ #26) могут быть считаны только пробелы и (или) символы табуляции (символ #9). Значение True также вернется, если текущее положение в файле непосредственно предшествует символам #13 или #26. Другими словами, SeekEOLn всегда вернет True, если EOLn на ее месте вернет True. Но в отличие от EOLn функция SeekEOLn как бы «видит» конец строки (или файла) через пробелы и знаки табуляции.
SeekEOLn ориентирована, главным образом, на работу с текстовыми файлами чисел. Последний пример из описания EOLn можно было бы переписать, заменив EOLn на SeekEOLn. От этого он заработал бы только лучше. Действительно, чтобы EOLn вернула True, нужно «упереться» в признак конца. А для этого надо убедиться, что «пустопорожние» пробелы после последнего числа в строке не являются числами: съедается время. SeekEoLn же игнорирует все пробелы и табуляции и «видит» конец издалека, ускоряя обработку.
12.6.1.6. Функция SeekEOF( VAR : Text) : Boolean. Эта функция замыкает ряд функций, начатый EOLn и SeekEOLn. Если отнять у SeekEOLn способность реагировать на признак конца строки, то получится функция SeekEOF, которая возвращает True, если только следующий за текущим положением символ — конец файла (#26), или если перед концом файла имеются только пробелы и (или) символы табуляции (#9), и (или) признаки конца строки (#13). Короче говоря, символы #9, #13, #32(пробел) для SeekEOF являются «прозрачными», и если сквозь них «виден» конец файла #26, то функция возвращает значение True. Во всех прочих случаях вернется значение False.
Функция позволяет найти смысловой конец файла, а не физический. Это полезно при работе с числами (реже с символами). Так, цикл чтения из файла f