KnigaRead.com/
KnigaRead.com » Компьютеры и Интернет » Программирование » W Cat - Язык программирования Euphoria. Справочное руководство

W Cat - Язык программирования Euphoria. Справочное руководство

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн "W Cat - Язык программирования Euphoria. Справочное руководство". Жанр: Программирование издательство неизвестно, год неизвестен.
Перейти на страницу:

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 для программной связи с подключенной к порту мышью.

Вы можете вызывать get_mouse() в большинстве текстовых и пиксельных режимов.

Первый вызов get_mouse(), который вы делаете, включает курсор мыши или подсвечивает позицию символа, в которой находится курсор.

DOS в общем случае не обеспечивает использование мыши в графических режимах SVGA (экраны с числом пикселов более 640x480). Это ограничение снято в Windows 95 (DOS 7.0). Грэм Барки, Питер Блю и другие программисты распространяют подпрограммы для мыши, которые решают проблемы, связанные с использованием мыши в SVGA. Посетите в Интернет страницу Архива файлов Euphoria.

Координаты x и y, выдаваемые функцией, будут совпадать с положением острия курсора мыши или могут относиться к ближайшему пикселу, на который это острие указывает. Проверьте это, если вы пытаетесь прочесть цвет пиксела с помощью функции get_pixel(). Может оказаться, что вам нужны координаты x-1, y-1 вместо x, y.

Пример 1:

Выданные величины:


{2, 100, 50}


говорят о том, что в данный момент левая кнопка нажата, а курсор мыши находится на экране в точке с координатами x=100, y=50.

Пример 2:

Чтобы проверить LEFT_DOWN, т.е. не нажата ли левая кнопка, напишите программу наподобие следующей:


object event


while 1 do

event = get_mouse()

if sequence(event) then

if and_bits(event[1], LEFT_DOWN) then

-- левая кнопка была нажата

exit

end if

end if

end while


См. также:

mouse_events, mouse_pointer, and_bits


get_pixel


Платформа:

DOS32

Синтаксис:

x = get_pixel(s)

Описание:

Когда s является 2-х элементным рядом экранных координат {x, y}, get_pixel() выдаёт номер цвета пиксела на пиксельном экране в этой точке (небольшое целое число).

Когда s является 3-х элементным рядом формы {x, y, n}, get_pixel() выдаёт ряд из n номеров цветов для точек, начиная с {x, y} и с шагом 1 вправо, {x+1, y}, {x+2, y} и т.д.

Точки за пределами экрана имеют непредсказуемые номера цветов.

Комментарии:

Когда аргумент n задан, для чтения цветов пикселов используется очень быстрый алгоритм. Он значительно быстрее, чем поочерёдный вызов get_pixel() для чтения цвета каждого следующего пиксела.

Пример:


object x


x = get_pixel({30,40})

-- x даёт значение цвета в точке x=30, y=40


x = get_pixel({30,40,100})

-- x даёт ряд из 100 номеров цвета, представляющих

-- строчку пикселов, начинающуюся в точке {30,40} и идущую вправо


См. также:

pixel, graphics_mode, get_position


get_position


Синтаксис:

include graphics.e

s = get_position()

Описание:

Выдаёт номера текущих строки и колонки позиции, в которой находится курсор, как 2-х элементный ряд вида {строка, колонка}.

Комментарии:

Функция get_position() работает в обоих режимах - текстовом и пиксельном. В пиксельных режимах курсор не будет виден, но get_position() будет выдавать строку и колонку, в которых появится следующий символ.

Система координат, в которой отображаются символы, отличается от той, в которой отображаются пикселы. Пикселы отображаются так, что верхний левый находится в точке (x=0,y=0) и первая координата управляет горизонтальным положением, слева направо. Для символов же первая координата управляет вертикальным положением, сверху вниз, а верхний левый находится в позиции 1,1. В пиксельных режимах вы можете одновременно выводить на экран и пикселы, и текст. Функция get_position() выдаёт текущие строку и колонку для выводимого вами текста, а не для пиксела, который вы собираетесь включить. Соответствующая функция для получения текущей позиции пиксела в языке Euphoria отсутствует.

См. также:

position, get_pixel


get_screen_char


Синтаксис:

include image.e

s = get_screen_char(i1, i2)

Описание:

Выдаёт 2-элементный ряд s в форме {код ascii, атрибут} для символа на экране в строке i1, колонке i2. Ряд s состоит из двух атомов. Первый даёт код ASCII для символа. Второй же содержит информацию о цветах символа и фона и, возможно, другие данные, относящиеся к внешнему виду символа на экране.

Комментарии:

С помощью подпрограмм get_screen_char() и put_screen_char() вы можете запоминать и выводить на экран символы с их атрибутами.

Пример:


-- запоминает в ряде s символ и его атрибут из верхнего левого угла экрана

s = get_screen_char(1,1)

-- выводит из ряда s символ с его атрибутом в позицию строка 25, колонка 10

put_screen_char(25, 10, {s})


См. также:

put_screen_char, save_text_image


get_vector


Платформа:

DOS32

Синтаксис:

include machine.e

s = get_vector(i)

Описание:

Выдаёт текущий дальний адрес защищенного режима для обработчика прерывания номер i. Ряд s будет иметь 2 элемента: {16-битный сегмент, 32-битное смещение}.

Пример:


s = get_vector(#1C)

-- s будет содержать дальний адрес обработчика

-- прерывания от таймера, например: {59, 808}


Пример программы:

demodos32hardint.ex

См. также:

set_vector, lock_memory


getc


Синтаксис:

i = getc(fn)

Описание:

Считывает и выдаёт следующий символ (байт) из файла или с устройства fn. Коды символов будут иметь величину от 0 до 255. При достижении конца файла выдаётся -1.

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*