Читает следующие i байтов из файла номер fn. Выдаёт байты в виде ряда. Ряд будет иметь длину i, исключая случаи, когда в файле для чтения остаётся меньше, чем i байтов.
Комментарии:
Когда i > 0 и length(s) < i, это означает, что вы достигли конца файла. В конечном итоге функция выдаёт пустой ряд.
Эта функция обычно используется с файлами, открытыми на чтение в двоичном режиме, "rb". Данный приём позволяет избежать путаницы текстового режима "r", в котором DOS пребразует пары управляющих символов CR и LF в LF ("возврат каретки" + "перевод строки" в "перевод строки").
Пример:
include get.e
integer fn
fn = open("temp", "rb") -- существующий файл
sequence whole_file
whole_file = {}
sequence chunk
while 1 do
chunk = get_bytes(fn, 100) -- читает отрывок в 100 байтов за один вызов
whole_file &= chunk -- отрывок может быть пустым, это нормально
if length(chunk) < 100 then
exit
end if
end while
close(fn)
? length(whole_file) -- должно совпадать с размером "temp", выдаваемым по команде DIR
См. также:
getc, gets
get_display_page
Платформа:
DOS32
Синтаксис:
include image.e
i = get_display_page()
Описание:
Большинство видеоплат имеет графические режимы со множественными страницами памяти. Это позволяет вам записывать экранную информацию на одну страницу, а отображать в это же время другую страницу, уже готовую к просмотру. Функция get_display_page() выдаёт номер текущей страницы, которая отображается на мониторе.
Комментарии:
По умолчанию номер активной и отображаемой страницы один и тот же и равен 0, то есть пользователь видит собственно процесс записи экранной информации.
Функция video_config() покажет вам, сколько страниц доступно в текущем графическом режиме.
См. также:
set_display_page, get_active_page, video_config
get_key
Синтаксис:
i = get_key()
Описание:
Выдаёт код клавиши, которая была нажата пользователем, но не ожидает нажатия. Выдает -1, если ни одна из клавиш не была нажата. Специальные коды выдаются для функциональных клавиш, клавиш со стрелками и т.д.
Комментарии:
Операционная система может хранить некоторое не слишком большое количество кодов последовательных нажатий на клавиши в своём буфере клавиатуры. Функция get_key() будет выдавать данные из буфера о каждом следующем нажатии на клавишу или -1, если буфер пуст.
Запустите программу key.bat, чтобы увидеть, какие коды генерируются при нажатии на каждую из клавиш именно вашей клавиатуры, так как возможны отличия.
См. также:
wait_key, getc
get_mouse
Платформа:
DOS32
Синтаксис:
include mouse.e
x1 = get_mouse()
Описание:
Выдаёт данные о последнем мышином событии по форме: {событие, x, y} или выдаёт -1, если никаких событий с момента последнего вызова get_mouse() не было.
В файле mouse.e определены глобальные константы для следующих возможных мышиных событий (нажатий на кнопки):
global constant MOVE = 1, -- движение
LEFT_DOWN = 2, -- левая нажата
LEFT_UP = 4, -- левая отпущена
RIGHT_DOWN = 8, -- правая нажата
RIGHT_UP = 16, -- правая отпущена
MIDDLE_DOWN = 32, -- средняя нажата
MIDDLE_UP = 64 -- средняя отпущена
Величины x и y являются координатами курсора мыши на момент произошедшего события. Функция get_mouse() выдаёт немедленно или -1, или событие. Функция не ожидает событий. Вы должны проверять обстановку на мыши достаточно часто, чтобы избежать пропуска событий. Когда случается очередное событие, данные о предыдущем теряются, если вы не успели прочитать их. На практике несложно отследить практически все события. Потеря события MOVE в общем случае не очень критична, так как следующие MOVE покажут вам, где находится курсор мыши.
Информация о нескольких событиях, происходящих одновременно, также может выдаваться. Например, если мышь передвигается с нажатой левой кнопкой, get_mouse() будет выдавать величину события LEFT_DOWN + MOVE, т.е. 2 + 1, что равно 3. По этой причине вы должны проверять информацию и выделять частные события с помощью and_bits(). Просмотрите примеры ниже, чтобы уяснить детали.
Комментарии:
В пиксельных режимах с шириной экрана 320 пикселов вам необходимо будет делить значение координаты x на 2, чтобы получать правильную позицию курсора на экране (странная особенность DOS.)
В текстовых режимах DOS32 вам необходимо масштабировать координаты x и y, чтобы получить позицию по строкам и колонкам.
Чтобы использовать get_mouse() под DOS32, вам необходим загруженный драйвер DOS для программной связи с подключенной к порту мышью.