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
...
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.