8.9. Приложение № 6. Предикаты файлового ввода-вывода на языке Turbo Prolog
ФУНКЦИЯ |
OPENREAD |
СИНТАКСИС: |
openread(SymbolicFileName, DosFileName), где
-
file SymbolicFileName - переменная типа "файл", связанная с открытым потоком;
-
string DosFileName - текстовая строка с полным или кратким именем файла;
|
ШАБЛОНЫ: |
(i, i) ; |
НАЗНАЧЕНИЕ: |
Функция открывает для чтения файл; |
ОПИСАНИЕ: |
Функция открывает для чтения файл, имя которого указано в переменной "DosFileName", и связывает с ним переменную - дескриптор "SymbolicFileName" ; |
ФУНКЦИЯ |
OPENWRITE |
СИНТАКСИС: |
openwrite(SymbolicFileName, DosFileName), где
-
file SymbolicFileName - переменная типа "файл", связанная с открытым потоком;
-
string DosFileName - текстовая строка с полным или кратким именем файла;
|
ШАБЛОНЫ: |
(i, i); |
НАЗНАЧЕНИЕ: |
Функция открывает файл для записи; |
ОПИСАНИЕ: |
Функция открывает файл для записи, имя которого указано в переменной "DosFileName", и связывает с ним переменную - дескриптор "SymbolicFileName" ; |
ФУНКЦИЯ |
OPENAPPEND |
СИНТАКСИС: |
openappend(SymbolicFileName, DosFileName), где
-
file SymbolicFileName - переменная типа "файл", связанная с открытым потоком;
-
string DosFileName - текстовая строка с полным или кратким именем файла;
|
ШАБЛОНЫ: |
(i, i); |
НАЗНАЧЕНИЕ: |
Функция открывает файл для добавления в его конец данных; |
ОПИСАНИЕ: |
Функция открывает файл для добавления в его конец данных, имя которого указано в переменной "DosFileName", и связывает с ним переменную - дескриптор "SymbolicFileName" ; |
ФУНКЦИЯ |
OPENMODIFY |
СИНТАКСИС: |
openmodify(SymbolicFileName, DosFileName), где
-
file SymbolicFileName - переменная типа "файл", связанная с открытым потоком;
-
string DosFileName - текстовая строка с полным или кратким именем файла;
|
ШАБЛОНЫ: |
(i, i); |
НАЗНАЧЕНИЕ: |
Функция открывает для изменения файл; |
ОПИСАНИЕ: |
Функция открывает для изменения файл, имя которого указано в переменной "DosFileName", и связывает с ним переменную - дескриптор "SymbolicFileName" ; |
ФУНКЦИЯ |
READDEVICE |
СИНТАКСИС: |
readdevice(SymbolicFileName), где file SymbolicFileName - переменная типа "файл", связанная с открытым потоком; |
НАЗНАЧЕНИЕ: |
Устанавливает или выдаёт текущее устройство ввода; |
ШАБЛОНЫ: |
(i), (o); |
ОПИСАНИЕ: |
(i): Переназначает текущее устройство ввода на открытый файл с данными "SymbolicFileName". Открываемый файл может быть один из стандартных файлов или любой файл пользователя, открытый для чтения или модификации; (o): Связывает "SymbolicFileName" с именем текущего устройства ввода. Стандартные файлы, которые могут быть открыты для ввода:
-
com1 чтение из последовательного порта связи;
-
keyboard чтение с клавиатуры (по умолчанию);
-
stdin чтение из стандартного ввода DOS;
|
НЕУДАЧНОЕ ЗАВЕРШЕНИЕ: |
Никогда не даёт; |
ОШИБКИ: |
1011 Попытка назначить устройство ввода из файла, который не находится ни в режиме ввода, ни в режиме модификации. |
ФУНКЦИЯ |
WRITEDEVICE |
СИНТАКСИС: |
writedevice(SymbolicFileName), где file SymbolicFileName - переменная типа "файл", связанная с открытым потоком; |
НАЗНАЧЕНИЕ: |
Устанавливает или выдаёт текущее устройство вывода; |
ШАБЛОНЫ: |
(i), (o); |
ОПИСАНИЕ: |
(i): Переназначает текущее устройство вывода в открытый файл с данными "SymbolicFileName". Открытый файл может быть одним из стандартных символических файлов или любым пользовательским файлом, открытым для записи или для модификации; (o): Связывает "SymbolicFileName" с именем текущего устройства вывода. Встроенными файлами, которые могут быть использованы для вывода, являются:
-
com1 запись в последовательный порт связи;
-
printer запись в параллельный порт принтера;
-
screen вывод на экран монитора;
-
stdout запись в стандартный поток вывода;
-
stderr запись в стандартный поток ошибок;
|
НЕУДАЧНОЕ ЗАВЕРШЕНИЕ: |
Никогда не даёт; |
ОШИБКИ: |
1012 Попытка переназначить устройство вывода в файл, который не находится ни в режиме записи, ни в режиме модификации (добавления); |
ФУНКЦИЯ |
FILEMODE |
СИНТАКСИС: |
filemode(SymbolicFileName, FileMode), где
-
file SymbolicFileName - переменная типа "файл", связанная с открытым потоком;
-
integer FileMode - режим работы файла: 0 - текстовый режим, 1 - двоичный режим;
|
НАЗНАЧЕНИЕ: |
Обеспечивает доступ к двоичным файлам; |
ШАБЛОНЫ: |
(i, i), (i, o); |
ОПИСАНИЕ: |
(i, i): Устанавливает файлу "SymbolicFileName" режим, указанный в "FileMode" ; (i, o): Возвращает текущий режим файла "SymbolicFileName" в "FileMode" ;
|
НЕУДАЧНОЕ ЗАВЕРШЕНИЕ: |
Никогда не даёт; |
ОШИБКИ: |
1018 Файл не открыт; 1019 Недопустимый режим файла, должен быть 0 или 1;
|
ПРИМЕЧАНИЕ: |
"FileMode" = 0 (Текстовый режим): Символ возврата каретки, CR (ASCII 13) [клавиша "Enter" ] подавляется с помощью программ стандартного ввода ( readchar, readln… ). CR помещается перед каждым LF (переводом строки) предикатами вывода. Символ, получаемый комбинацией клавиш Ctrl-Z, и физический конец файла совпадают; "FileMode" = 1 (Двоичный режим): В этом режиме не производятся никакие преобразования. Для операций ввода может быть использован только предикат readchar ;
|
ФУНКЦИЯ: |
CLOSEFILE |
СИНТАКСИС: |
closefile(SymbolicFileName), где file SymbolicFileName - переменная типа "файл", связанная с открытым потоком; |
НАЗНАЧЕНИЕ: |
Функция закрывает файл; |
ШАБЛОНЫ: |
(i) ; |
ОПИСАНИЕ: |
Функция closefile закрывает файл, открытый с именем "SymbolicFileName". Предикат closefile согласовывается, даже если файл не был открыт; |
НЕУДАЧНОЕ ЗАВЕРШЕНИЕ: |
Никогда не даёт; |
ОШИБКИ: |
Отсутствуют; |
ФУНКЦИЯ: |
FILEPOS |
СИНТАКСИС: |
filepos(SymbolicFileName, FilePosition, Mode), где
-
file SymbolicFileName - переменная типа "файл", связанная с открытым потоком;
-
real FilePosition - позиция ввода-вывода в указанном файле;
-
integer Mode - режим начала отсчёта позиции;
|
НАЗНАЧЕНИЕ: |
Функция перемещает указатель файла; |
ШАБЛОНЫ: |
(i, i, i), (i, o, i) ; |
ОПИСАНИЕ: |
(i, i, i): Функция filepos выбирает позицию в указанном файле, где происходит следующая операция обработки содержимого файла; |
Позиция рассчитывается согласно значению "Mode";
Режим |
Позиция |
0 |
Относительно начала файла |
1 |
Относительно текущей позиции |
2 |
Относительно конца файла |
Например, если переменная "FilePosition" связана со значением 11 и переменная "Mode" связана со значением 0, следующая операция (чтение или запись) будет происходить в позиции 11 (относительно начала файла);
(i , o, i): Возвращает текущую относительную позицию файла от начала файла. Переменная "Mode" игнорируется при этом шаблоне описания аргументов;
При использовании filepos имейте в виду, что операционная система при каждом нажатии клавиши "Enter" в текстовых файлах, генерирует два символа - "возврат каретки" (ASCII 13) и "перевод строки" (ASCII 10). При чтении Турбо Прологом строк из таких файлов эти символы автоматически пропускаются, но их необходимо учитывать при использовании filepos ;
НЕУДАЧНОЕ ЗАВЕРШЕНИЕ: |
Никогда не даёт; |
ОШИБКИ: |
1018 Файл не открыт; 1070 Невозможно выполнить предикат;
|
ФУНКЦИЯ: |
EOF |
СИНТАКСИС: |
eof(SymbolicFileName), где file SymbolicFileName - переменная типа "файл", связанная с открытым потоком; |
НАЗНАЧЕНИЕ: |
Функция контролирует конец файла; |
ШАБЛОНЫ: |
(i) ; |
ОПИСАНИЕ: |
Функция eof проверяет, не указывает ли указатель текущей позиции на конец файла. Если да, то предикат eof согласовывается, иначе предикат даёт неудачное завершение; |
НЕУДАЧНОЕ ЗАВЕРШЕНИЕ: |
Не конец файла; |
ОШИБКИ: |
Отсутствуют; |
ФУНКЦИЯ: |
FLUSH |
СИНТАКСИС: |
flush(SymbolicFileName), где file SymbolicFileName - переменная типа "файл", связанная с открытым потоком; |
НАЗНАЧЕНИЕ: |
Функция записывает на диск файловый буфер Турбо Пролога; |
ШАБЛОНЫ: |
(i) ; |
ОПИСАНИЕ: |
Функция flush инициирует запись содержимого внутреннего файлового буфера системы Турбо Пролог на текущее записывающее устройство. Функция flush полезна, например, когда вывод происходит на последовательный порт, и имеется необходимость посылать данные в порт до заполнения буфера; Примечание: Из-за ограничений операционной системы flush не обеспечивает защиту файла в операционной системе. Обеспечить целостность файла можно путём закрытия его и последующего открытия вновь;
|
НЕУДАЧНОЕ ЗАВЕРШЕНИЕ: |
Подобно write ; |
ОШИБКИ: |
Подобно write (смотри
"Буферизированный (потоковый) ввод-вывод. Часть II"
); |
ФУНКЦИЯ: |
EXISTFILE |
СИНТАКСИС: |
existfile(DosFileName), где string DosFileName - имя файла с расширением (в полной или краткой форме); |
НАЗНАЧЕНИЕ: |
Проверяет, существует ли файл в текущем каталоге |
ШАБЛОНЫ: |
(i) ; |
ОПИСАНИЕ: |
Функция existfile согласовывается, если файл "DosFileName" присутствует в каталоге активного диска (смотри disk в руководстве пользователя Turbo Prolog 2.0 или его online справке); |
НЕУДАЧНОЕ ЗАВЕРШЕНИЕ: |
Если файл не существует; |
ОШИБКИ: |
Отсутствуют; |
ФУНКЦИЯ: |
DELETEFILE |
СИНТАКСИС: |
deletefile(DosFileName), где string DosFileName - имя файла с расширением (в полной или краткой форме); |
НАЗНАЧЕНИЕ: |
Уничтожает файл; |
ШАБЛОНЫ: |
(i) ; |
ОПИСАНИЕ: |
Функция deletefile уничтожает файл, имя которого находится в переменной "DosFileName", на текущем диске; |
НЕУДАЧНОЕ ЗАВЕРШЕНИЕ: |
Никогда не даёт; |
ОШИБКИ: |
1072 Невозможно уничтожить файл; |
ФУНКЦИЯ: |
RENAMEFILE |
СИНТАКСИС: |
renamefile(OldDosFileName, NewDosFileName), где
-
string OldDosFileName - имя файла с расширением (в полной или краткой форме);
-
string NewDosFileName - имя файла с расширением (в полной или краткой форме);
|
НАЗНАЧЕНИЕ: |
Переименовывает файл; |
ШАБЛОНЫ: |
(i, i) ; |
ОПИСАНИЕ: |
renamefile изменяет имя, указанное в переменной "OldDosFileName" (на текущем диске), на имя, указанное в переменной "NewDosFileName" ; |
НЕУДАЧНОЕ ЗАВЕРШЕНИЕ: |
Никогда не даёт; |
ОШИБКИ: |
1073 Невозможно переименовать файл; |
ФУНКЦИЯ: |
FILE_STR |
СИНТАКСИС: |
file_str( DosFileName, TextString ), где
-
string DosFileName - имя файла с расширением (в полной или краткой форме);
-
string TextString - текстовая строка, вмещающая в себя содержимое файла;
|
НАЗНАЧЕНИЕ: |
Записывает из строки или считывает в строку дисковый файл полностью; |
ШАБЛОНЫ: |
(i, o), (i, i) ; |
ОПИСАНИЕ: |
(i, o): Весь файл "DosFileName" (максимальный размер 64К) будет считан в строку "TextString" ; (i, i): Будет создан новый текстовый файл "DosFileName", содержащий текст "TextString" ;
|
НЕУДАЧНОЕ ЗАВЕРШЕНИЕ: |
Никогда не даёт; |
ОШИБКИ: |
1026 Размер файла, загружаемого предикатом file_str, превышает 64К; 1027 Невозможно открыть файл;
1028 Запись в файл невозможна;
|