Переход на позицию байта с номером a1 в файле fn или в конец файла, если a1 равно -1. Для каждого из открытых файлов у системы имеется информация о текущей байтовой позиции, которая обновляется в результате выполнения на файле операций ввода/вывода. Начальная позиция равна 0 для файлов, открытых на чтение, запись или обновление. Начальная позиция равна концу файла для файлов, открытых на добавление. Величина i1, выдаваемая функцией seek(), равна 0, если переход в заданную позицию завершился успешно, и не равна 0, если переходу что-то помешало. Возможен переход за границу имеющегося файла, в некоторую позицию за его концом. Если вы перешли за конец файла и записываете данные, в зазор между имевшимся концом файла и вашими новыми данными будут вставлены неопределённые байты.
Комментарии:
После перехода в заданную позицию и чтения (записи) последовательности байтов вам может потребоваться новый явный вызов seek() непосредственно перед переключением на запись (чтение) байтов, даже если позиция в файле уже была именно та, которая вам необходима.
Эта функция обычно используется с файлами, открытыми в двоичном режиме. В текстовом режиме DOS преобразует CR LF в LF на входе, и LF в CR LF на выходе, что может вызывать великую путаницу, когда вы пытаетесь подсчитывать байты.
Пример:
include file.e
integer fn
fn = open("mydata", "rb")
-- читает и отображает первую строку файла 3 раза:
for i = 1 to 3 do
puts(1, gets(fn))
if seek(fn, 0) then
puts(1, "перемотка не сработала!\n")
end if
end for
См. также:
where, open
sequence
Синтаксис:
i = sequence(x)
Описание:
Выдаёт 1, если x является рядом, иначе выдаёт 0.
Комментарии:
Основное назначение команды - определение переменных типа ряд. Но вы можете вызывать её как обычную функцию, чтобы проверить, является ли объект действительно рядом.
Пример 1:
sequence s
s = {1,2,3}
Пример 2:
if sequence(x) then
sum = 0
for i = 1 to length(x) do
sum = sum + x[i]
end for
else
-- x должен быть атомом
sum = x
end if
См. также:
atom, object, integer, atoms and sequences
set_active_page
Платформа:
DOS32
Синтаксис:
include image.e
set_active_page(i)
Описание:
Выбирает видеостраницу номер i для всех выводов на экран.
Комментарии:
Используя несколько видеостраниц, вы можете одновременно изменять содержимое всего экрана сразу без каких бы то ни было визуальных подёргиваний и мельканий. Вы можете также сначала записать информацию на невидимую страницу экрана, а потом быстро, практически мгновенно, переменить страницы и вывести эту новую информацию.
Функция video_config() сообщит вам, как много видео страниц доступно в текущем графическом режиме на вашей видеоплате.
По умолчанию активная страница и отображаемая страница обе имеют номер 0.
Всё это работает под DOS или в полноэкранном окне DOS. В окнах, занимающих часть экрана, вы не можете манипулировать номерами активной страницы.
Пример:
include image.e
-- активная и отображаемая страницы сначала обе имеют номер 0
puts(1, "\nЭто страница 0\n")
set_active_page(1) -- экранный вывод теперь пойдёт на страницу 1
clear_screen()
puts(1, "\nТеперь мы перешли на страницу 1\n")
if getc(0) then -- ожидание нажатия клавиши
end if
set_display_page(1) -- "Теперь мы ..." становится видимым
if getc(0) then -- ожидание нажатия клавиши
end if
set_display_page(0) -- "Это ..." становится видимым снова
set_active_page(0)
См. также:
get_active_page, set_display_page, video_config
set_display_page
Платформа:
DOS32
Синтаксис:
include image.e
set_display_page(i)
Описание:
Делает видеостраницу номер i отображаемой на экране.
Комментарии:
С несколькими видеостраницами вы можете моментально изменять содержимое всего экрана без дрожаний и мельканий. Вы можете также спрятать содержимое экрана, а затем быстро вернуть его на прежнее место.
Функция video_config() сообщит вам, сколько видеостраниц доступно в текущем видеорежиме на вашей видеоплате.
По умолчанию в качестве и активной, и отображаемой страницы используется видеостраница под номером 0.
Эта процедура работает под DOS или в полноэкранном окне DOS. В окнах, занимающих часть экрана, вы не можете манипулировать номерами видеостраниц.
Пример:
See set_active_page() example.
См. также:
get_display_page, set_active_page, video_config
set_rand
Синтаксис:
include machine.e