Выбрать главу

Пример:

? object({1,2,3}) -- всегда печатает 1

См. также:

integer, atom, sequence

open

Синтаксис:

fn = open(st1, st2)

Описание:

Открывает файл или устройство, выдаёт номер файла, который служит аргументом для подпрограмм ввода/вывода. Если открытие не состоялось, выдаётся -1. Ряд st1 содержит путь к файлу или устройству. Ряд st2 задаёт режим, в котором файл должен быть открыт. Возможны следующие режимы:

"r" - открыть текстовый файл для чтения

"rb" - открыть двоичный файл для чтения

"w" - создать текстовый файл для записи

"wb" - создать двоичный файл для записи

"u" - открыть текстовый файл для обновления (чтение и запись)

"ub" - открыть двоичный файл для обновления

"a" - открыть текстовый файл для добавления

"ab" - открыть двоичный файл для добавления

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

Вывод в текстовые файлы будет иметь символы возврата каретки, автоматически добавляемые перед символами перевода строки. На входе эти символы возврата каретки удаляются. Символ control-Z (ASCII 26) является сигналом немедленного окончания файла. Примечание: на некоторых версиях DOS ввод пользователем control-Z может вызывать сбой стандартного ввода, устраняемый только закрытием окна DOS.

Ввод/вывод в двоичных файлах никак не модифицируется. Любая величина байта от 0 до 255 может быть считана или записана.

Некоторые типовые устройства, которые вы можете открыть под DOS или Windows :

"CON" - консоль (экран)

"AUX" - вспомогательный последовательный порт

"COM1" - последовательный порт 1

"COM2" - последовательный порт 2

"PRN" - принтер, подключенный к параллельному порту

"NUL" - несуществующее устройство, поглощающее вывод

В настоящее время доступна работа с файлами размером до 2 Gb. За этой границей некоторые файловые операции могут выполняться некорректно. Данный лимит со временем может быть пересмотрен.

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

DOS32: При исполнении программы под Windows 95 или более новой ОС этого семейства вы можете открыть любой существующий файл, который имеет длинное своё имя (т.е. длиннее, чем стандартный формат 8.3 DOS) или длинные имена каталогов в его пути, используя любой режим (чтение, запись и т.д.). Тем не менее, если вы попытаетесь создать новый файл с длинным именем (открыть в режиме "w" или "a" файл, который ещё не существует), это имя будет усечено до необходимого формата 8.3. Мы надеемся добавить возможность создания новых файлов с длинными именами в будущих версиях Euphoria.

WIN32, Linux and FreeBSD: Работа с длинными именами файлов полностью обеспечивается при чтении, записи и создании.

DOS32: Тщательно избегайте использования имён устройств в качестве имён файлов, даже если вы добавляете к ним расширение имени, т.е. CON.TXT, CON.DAT, CON.JPG и т.д. - все подобные имена относятся только к устройству CON, но не к файлам, существование которых невозможно.

Пример:

integer file_num, file_num95

sequence first_line

constant ERROR = 2

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 до R

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.