Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Имитационное мо... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 6
На сайте нет зарегистрированных пользователей

Пользователей: 13,372
новичок: vausoz
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Диплом RSA, ЭЦП, сертификаты, шифрование на C#
Расчет мер близости на отношениях на Delphi + Пояснительная записка
Моделирование работы узла коммутации сообщений на GPSS + Пояснительная з...

5.4.1. Запись в файлы


Для записи в файлы термов и литер могут быть использованы в точности те же самые предикаты, что обсуждались ранее Единственное различие состоит в том, что когда мы хотим записать данные в файл, то нам надо сменить текущий выходной поток данных так, чтобы им являлся файл, в который мы будем записывать данные, а не дисплей терминала. Текущий выходной поток данных изменяется с помощью предиката tell. Если X конкретизирована именем файла, которое должно быть атомом, то целевое утверждение tell(X) переключает текущий выходной поток данных таким образом, что любая операция записи (выполняемая с помощью write, put и других подобных предикатов) будет производиться в этот файл, а не на дисплей терминала. Целевое утверждение tell(X) можно согласовать лишь один раз. Точно так же при выполнении Прологом возврата за целевое утверждение tell не происходит восстановления прежнего текущего выходного потока данных. Наряду со сменой текущего выходного потока данных предикат tell в зависимости от ситуации выполняет также другие операции. В первый раз, когда программа обращается к tell с конкретным именем файла X , Пролог считает, что необходимо завести новый файл с этим именем. Поэтому если X конкретизирована некоторым именем файла и файл с таким именем уже существует, то все литеры, уже содержащиеся в этом файле, удаляются. Напротив, если файла с именем, являющимся значением X , не существует, то файл с таким именем будет создан. В обоих случаях файл считается открытым (для записи в него). Это значит, что каждая последующая запись в этот файл будет добавлять литеры в конец файла до тех пор, пока не появится явное указание, что запись в файл полностью завершена (пока файл не будет закрыт). С данного момента если будет сделана новая попытка записи в этот файл, то Пролог, как и прежде, будет считать, что необходимо писать новую версию этого файла. При попытке выполнить tell(X), когда переменная X не имеет конкретного значения или ее значение не является именем файла, возникает ошибка. Реакция Пролог-системы на возникающие ошибки зависит от конкретной реализации.
Предикат telling используется для определения имени файла, служащего текущим выходным потоком данных. Целевое утверждение telling(X) считается согласованным, если X имеет своим значением имя файла текущего выходного потока данных. Как вы, наверное, догадываетесь, если X неконкретизировано, то telling конкретизирует X атомом (именем файла), делающим это целевое утверждение верным.
Когда запись в файл полностью завершена, то выполнение предиката told оформит конец файла и закроет его (для вывода). Кроме того, в результате его выполнения текущим выходным потоком данных снова станет дисплей терминала. Таким образом, типичная последовательность целевых утверждений для записи в файл некоторой совокупности литер имеет вид
… tеll(фред), write(X), told,…
Если текущий выходной поток данных переключается на другой файл без использования told, то прежний файл не будет закрыт и останется доступным для записи в него. Это позволяет делать записи в файл с перерывами, как в следующем примере;
…tell (X), write(A), tell(user),write(B), tell(X), write(C), told.



Опубликовал Kest July 09 2009 12:39:53 · 0 Комментариев · 9586 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

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

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
oTextrackBar
Последнее загруж...
DiskInfo
Меню проводника в...
Zoom [Исходник на...
mp3tag
Советы от Даниилы...
CoolHints2k v1.03
Visual Basic Script
FormShape [Исходн...
Delphi 6/7 базы д...
Gold Submitter II...
PHP/MySQL для нач...
Учебник для продв...
Geo-Whois
Х. М. Дейтел, П. ...
Мод "проверочный ...
VFW
Blobs [Исходник н...
Trojan [Исходник ...

Топ загрузок
Приложение Клие... 100774
Delphi 7 Enterp... 97839
Converter AMR<-... 20268
GPSS World Stud... 17014
Borland C++Buil... 14194
Borland Delphi ... 10293
Turbo Pascal fo... 7374
Калькулятор [Ис... 5984
Visual Studio 2... 5207
Microsoft SQL S... 3661
Случайные статьи
Блок GATE
CASE constant out ...
Чем полезно для че...
Рекомендации для и...
Об изображениях
Storm Internationa...
В качестве первого...
Логическое «ИЛИ» (...
Как нажать кнопку ...
Возможность доступа
Программирование: ...
Создание пользоват...
Заставляем AtGuard...
Для ввода строк с ...
Filles kazakh
Акселерометры
Каким будет просто...
7.9. Поиск по гр...
Динамическое резер...
Выбор сканирующего...
Нетипизированные ф...
Прекращение отладк...
ГЛАВА 1 ВВЕДЕНИЕ
Казино 777 vulkan ...
Игры. Игромания
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?