Запись в файл. Последовательность действий, необходимая для записи в файл:
Последовательность действий, необходимая для записи в файл:
1. Открытие файла с помощью предиката openwrite. Если файла с указанным именем нет, то создаетс яновый файл. Если файл уже есть, то его содержимое будет утрачено. Чтобы от этого застраховаться, можно сначала проверить наличие файла предикатом existfile, и принять соответствующие меры, если existfile будет успешным.
2. Назначение файла в качнстве устройства записи предиката writedevice.
3. Самма запись в файл write или writef.
4. Использование любых других предикатов и правил, отвечающих назначению программы.
5. Закрытие файла предикатом closefile.
/* Вывод информации на экран дисплея в файл на диск */
domains
str = string
file = datafile
predicates
data (str)
write_lines
goal
openwrite (data, “a1.dat”),
write_lines,
closefile (datafile)
clauses
data (“aaaa”).
data (“bbbb”).
data (“cccc”).
. . . . . . .
write_lines:- data (Line),
write (“ “, Line), nl,
writedevice (screen),
fail,
write_lines.
/* Считывание данных с клавиатуры и запись их в файл */
domains
file = datafile
kstr, fstr = string
predicates
readin (kstr, fstr) % чтение-запись
create_file
goal
create_file
clauses
create_file:- nl, nl,
write (“Введите имя файла”),
nl, nl, readln(FileName),
openwrite (datafile),
writedevice (datafile),
readln (Kstr),
concat (Kstr, “\13\10”, Fstr),
readin (Kstr, FStr),
closefile (datafile).
readin (_, Fstr):- write (FStr), readln (KStr1),
concat (KStr1, “\13\10”, Fstr1),
readin (Kstr1, Fstr1).
Чтение из файла
1. Открытие файла предикатом openread.
2. Назначение файла устройству чтения с помощью readdevice.
3. Само чтение из файла.
4. Использование произвольных предикатов и правил.
5. Закрытие файла предикатом close.
/* Считывание данных из файла и вывод их на экран и принтер */
domains
file = datafile
predicates
read_and_print
read_file
goal
read_file
clauses
read_file:- write (“Введите имя файла”), nl,
readln(FileName), nl,
openread (datafile, FileName), readdevice (datafile),
read_and_print, closefile (datafile),nl,
write (“Нажмите любую клавишу”), readdevice (keyboard),
readchar (_), exit.
read_and_print:- not (eof(datafile)), readln (Fstr), write (Fstr), nl,
writedevice (printer), write (Fstr), writedevice (screen), read_and_print.
read_and_print:- eof(datafile),!.
Дозапись в конец существующего файла
process_append:- write (“Введите имя файла”), nl,
readln (Filename), nl, write (“Программа готова принять данное для записи”), nl,
openappend (datafile, Filename), writedevice (datafile), readln (Kstr),
concat (Ksrt, “\13\10”, Fstr), readin (Kstr, Fstr), closefile (datafile).
% readin – смотри выше.
Создание меню с помощью окон