file_num = open("myfile", "r")

if file_num = -1 then

puts(ERROR, "не могу открыть myfile\n")

else

first_line = gets(file_num)

end if

file_num = open("PRN", "w") -- открывает принтер для вывода

-- под Windows 95:

file_num95 = open("bigdirectoryname\\verylongfilename.abcdefg",

"r")

if file_num95 != -1 then

puts(1, "это работает!\n")

end if

См. также:

close, lock_file

open_dll

Платформа:

WIN32, Linux, FreeBSD

Синтаксис:

include dll.e

a = open_dll(st)

Описание:

Открывает файл библиотеки динамического связывания Windows(.dll) или файл общей библиотеки Linux или FreeBSD(.so). Выдаёт 32-битный адрес или 0, если файл .dll не найден. В ряде st должно содержаться относительное или абсолютное имя файла. Windows будет использовать обычный системный путь поиска для доступа к файлам .dll.

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

Значение адреса, выданное open_dll(), служит аргументом для подпрограмм define_c_proc(), define_c_func() и define_c_var().

Вы можете открыть один и тот же файл .dll или .so несколько раз. Для этого не потребуется лишней памяти и вы будете получать одно и то же значение адреса при каждом открытии.

Euphoria закрывает библиотеки .dll автоматически в конце исполнения программы.

Пример:

atom user32

user32 = open_dll("user32.dll")

if user32 = 0 then

puts(1, "Не могу открыть user32.dll!\n")

end if

См. также:

define_c_func, define_c_proc, define_c_var, c_func, c_proc, platform.doc

or_bits

Синтаксис:

x3 = or_bits(x1, x2)

Описание:

Выполняет логическую операцию OR над соответствующими битами в x1 и x2. Бит в x3 будет равен 1, когда соответствующий бит или в x1, или в x2 равен 1.

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

Аргументами данной функции могут быть атомы или ряды. Применяются правила операций на рядах.

Аргументы должны быть представимы как 32-битные числа, со знаком или без знака.

Если вы намерены манипулировать полными 32-битными величинами, вы должны объявить ваши переменные как atom, а не как integer. Тип integer в Euphoria ограничен 31-м битом.

Результаты трактуются как числа со знаком. Они будут отрицательными, когда старший бит равен 1.

Пример 1:

a = or_bits(#0F0F0000, #12345678)

-- a будет равно #1F3F5678

Пример 2:

a = or_bits(#FF, {#123456, #876543, #2211})

-- a будет равно {#1234FF, #8765FF, #22FF}

См. также:

and_bits, xor_bits, not_bits, int_to_bits

...

<p>от P до R</p>

palette

Платформа:

DOS32

Синтаксис:

include graphics.e

x = palette(i, s)

Описание:

Изменяет оттенок для цвета номер i на s, где s является рядом интенсивностей составляющих цветов оттенка: {красный, зелёный, синий}. Каждая из составляющих s может иметь величину от 0 до 63. В случае успешного изменения выдаёт 3-х элементный ряд, содержащий величины составляющих цветов исходного цвета i, а все пикселы на экране, имевшие цвет i, приобретают новый оттенок. Если операция не удалась, выдаётся атом -1.

Пример:

x = palette(0, {15, 40, 10})

-- цвет номер 0 (обычно чёрный) изменён на оттенок

-- зеленоватого цвета.

См. также:

all_palette

peek

Синтаксис:

i = peek(a)

или ...

s = peek({a, i})

Описание:

Выдаёт величину байта (в пределах от 0 до 255), считанного из памяти по машинному адресу a, или выдаёт ряд, содержащий i последовательных байтовых величин, начинающихся в памяти с адреса a.

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

Так как значения адресов выражаются 32-битными числами, они могут быть больше величины, представимой типом integer (31 бит). Поэтому переменные, которые содержат адреса, должны объявляться как atom.

Более быстрым, чем побайтное считывание в цикле, является чтение нескольких байтов сразу с использованием второй формы peek().

Помните, что в функцию peek() подаётся единственный аргумент, который во второй форме является двухэлементным рядом.

Пример:

Следующие записи равнозначны:

-- метод 1

s = {peek(100), peek(101), peek(102), peek(103)}

-- метод 2

s = peek({100, 4})

См. также:

poke, peek4s, peek4u, allocate, free, allocate_low, free_low, call

peek4s

Синтаксис:

a2 = peek4s(a1)

или ...

s = peek4s({a1, i})

Описание:

Выдаёт 4-х байтную (32 бита) величину со знаком в диапазоне от -2147483648 до +2147483647, считанную с машинного адреса a1, или ряд, содержащий i последовательных 4-байтных величин со знаком, начинающихся с адреса a1 в памяти.

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

32-х битные величины, выдаваемые функцией peek4s(), могут превышать допустимые для типа integer в Euphoria (31-бит), поэтому вы должны использовать переменные типа atom.

Перейти на страницу:

Все книги серии Euphoria

Похожие книги