В режимах SVGA DOS может устанавливать неверную позицию курсора после вызова gets(0) для чтения с клавиатуры. Вы должны установить необходимую вам позицию сами, применив процедуру position().
Пример 1:
sequence buffer
object line
integer fn
-- читает текстовый файл в ряд
fn = open("myfile.txt", "r")
if fn = -1 then
puts(1, "Не могу открыть myfile.txt\n")
abort(1)
end if
buffer = {}
while 1 do
line = gets(fn)
if atom(line) then
exit -- -1 выдана в конце файла
end if
buffer = append(buffer, line)
end while
Пример 2:
object line
puts(1, "Как вас зовут?\n")
line = gets(0) -- читает стандартный вход (клавиатуру)
line = line[1..length(line)-1] -- удаляет символ \n в конце
puts(1, '\n') -- необходимо
puts(1, line & " - хорошее имя.\n")
См. также:
getc, puts, open
graphics_mode
Платформа:
DOS3 2
Синтаксис:
include graphics.e
i1 = graphics_mode(i2)
Описание:
Включает видеорежим i2. Просмотрите файл graphics.e, в котором имеется список доступных под управлением Euphoria пиксельных и текстовых видеорежимов. Если заданный режим включен успешно, i1 устанавливается в 0, в противном случае i1 устанавливается в 1.
Комментарии:
Некоторые видеорежимы называются текстовыми, так как в них может отображаться только текст и псевдографика. Другие видеорежимы называются пиксельными, потому что в них вы можете включать отдельные пикселы (элементы разрешения экрана), вычерчивать линии, эллипсы и т.д. и одновременно печатать текст.
Для более четкого возвращения в среду операционной системы обычно целесообразно перед завершением вашей программы перейти из пиксельного режима в стандартный исходный текстовый режим. Это можно сделать, вызвав функцию graphics_mode(-1). Если графическая программа приводит ваш экран в какое-то необычное беспорядочное состояние, вы можете очистить его с помощью команды DOS CLS, а также запустив интерпретатор ex.exeили редактор ed.
Некоторые видеоплаты иногда могут быть не в состоянии обеспечить вполне правильную работу в отдельных режимах SVGA, хотя при программном включении этого режима вы и получили величину i1, соответствующую успешному включению. Данную ошибку крайне трудно выявить без тестирования программы на конкретном оборудовании, так как стандартизация режимов SVGA и параметров новейших видеоплат далека от завершения.
На платформах WIN32и Linux/FreeBSDEuphoria исполняет команду graphics_mode(), для любого i2 выводя обычную текстовую консоль, если этой консоли ещё нет. Функция всегда выдаёт 0, не имеет значения, какое i2 в неё подано.
Пример:
if graphics_mode(18) then
puts(SCREEN, "требуется графика VGA!\n")
abort(1)
end if
draw_line(BLUE, {{0,0}, {50,50}})
См. также:
text_rows, video_config
...
instance
Платформа:
WIN3 2
Синтаксис:
include misc.e
i = instance()
Описание:
Выдаёт идентификатор текущей программы.
Комментарии:
Этот идентификатор представляет собой число, вырабатываемое операционной системой, и может быть подан в различные функции Windows, выдающие сведения о текущей исполняемой программе, т.е. о вашей программе. Каждый раз, когда пользователь запускает вашу программу, будет вырабатываться другой идентификатор экземпляра (образца) программы.
В языке Си это первый аргумент при вызове функции WinMain().
На платформах DOS32 и Linux/FreeBSDinstance() всегда выдаёт 0.
См. также:
platform.doc
int_to_bits
Синтаксис:
include machine.e
s = int_to_bits(a, i)
Описание:
Выдаёт i младших битов атома a как ряд единиц и нулей. В этом ряде младшие значащие биты идут первыми. Для отрицательных чисел выдаётся двоичное дополнение.
Комментарии:
, , and/or/xor/not
Вы можете использовать индексирование, сечение, операторы and/or/xor/not для обработки выходного ряда, т.е. манипулировать рядами битов по своему усмотрению. При необходмости могут быть легко осуществлены обычные и циклические сдвиги битов, а также другие преобразования.
Пример:
s = int_to_bits(177, 8)
-- s будет равно {1,0,0,0,1,1,0,1} -- "обратный" порядок
См. также:
bits_to_int, and_bits, or_bits, xor_bits, not_bits, операции на рядах
int_to_bytes
Синтаксис:
include machine.e
s = int_to_bytes(a)
Описание:
Преобразует целое в ряд, состоящий из 4 байтов. Эти байты идут в порядке, предусмотренном на машинах 386+, т.е. младший значащий байт идет первым.
Комментарии:
Вы можете воспользоваться этой процедурой перед засылкой 4 байтов в память при работе с программой на машинном языке.
Читать дальше