Разработчику библиотеки может понадобиться вызов crash_routine() в библиотеке. Это позволит более упорядоченно обращаться с данными, закрывая файлы, отпирая запертые файлы, высвобождая ресурсы и т.п. Но разработчик главной программы может иметь и свои собственные crash_routine(). И все аварийные функции будут отработаны Euphoria, если первая вызванная (последняя назначенная) и все последующие выдадут 0.
Аварийная функция не может продолжить исполнение программы из точки останова, исправив ошибку. Но других ограничений на то, что она может делать, практически не существует. Она не может и не должна возвращаться вспять по программе, но она может перезапустить эту программу, например, с откорректированными аргументами командной строки.
Если во время исполнения аварийной функции случится другая ошибка, снова вызывается распечатка отладочной информации, но имя файла в этом случае будет уже ex_crash.err, а не ex.err. С этого момента запрещаются любые новые вызовы аврийных функций, а вы остаётесь наедине с ex.err и ex_crash.err, чтобы с ними в руках попытаться найти причину всех несчастий.
Пример:
function crash(object x)
-- в случае пожара ...
-- (под Linux) отправить сообщение e-mail, содержащее файл ex.err
system("mail -s \"crash!\" [email protected] < ex.err > /dev/null", 2)
return 0
end function
crash_routine(routine_id("crash"))
См. также:
abort, crash_file, crash_message, отладка и профилирование
current_dir
Синтаксис:
include file.e
s = current_dir()
Описание:
Выдаёт имя текущего рабочего каталога (директории, папки, фолдера).
Комментарии:
После имени текущего каталога не будет ни косой черты, ни обратной косой черты, за исключением случая под DOS/Windows, в корневом каталоге диска, где вы получите, например, C:\
Пример:
sequence s
s = current_dir()
-- s будет равно "C:\EUPHORIA\DOC", если вы находитесь в этом каталоге
См. также:
dir, chdir, getenv
cursor
Платформа:
WIN32, DOS32
Синтаксис:
include graphics.e
cursor(i)
Описание:
Задаёт форму курсора. Библиотека graphics.e содержит глобальные константы:
global constant NO_CURSOR = #2000,
UNDERLINE_CURSOR = #0607,
THICK_UNDERLINE_CURSOR = #0507,
HALF_BLOCK_CURSOR = #0407,
BLOCK_CURSOR = #0007
Вторая и четвертая шестнадцатиричные цифры (слева) дают номера верхнего и нижнего рядов пикселов в изображении курсора. От первой цифры зависит, будет курсор видимым или нет. Например, #0407 включает с 4-го по 7-ой ряд пикселов.
Комментарии:
В пиксельных экранных режимах курсор не отображается, только в текстовых.
Пример:
cursor(BLOCK_CURSOR)
См. также:
graphics_mode, text_rows
custom_sort
Синтаксис:
include sort.e
s2 = custom_sort(i, s1)
Описание:
Сортирует элементы ряда s1, используя заданную сравнивающую функцию с номером (идентификатором) i. Выдаёт отсортированный ряд.
Комментарии:
Заданная вами заказная сравнивающая функция должна быть функцией двух аргументов наподобие Euphoria-функции compare(). Она должна сравнивать два объекта и выдавать -1, 0 или +1.
Пример программы:
demo\csort.ex
См. также:
sort, compare, routine_id
date
Синтаксис:
s = date()
Описание:
Выдаёт ряд со следующей информацией:
{год, -- начиная с 1900
месяц, -- январь = 1
день, -- день месяца, начиная с 1
час, -- от 0 до 23
минута, -- от 0 до 59
секунда, -- от 0 до 59
день недели, -- воскресенье = 1
день года} -- 1 января = 1
Пример:
now = date()
-- now равно: {95,3,24,23,47,38,6,83}
-- т.е. пятница, 24 марта 1995 года, 23 часа 47 минут 38 секунд, 83-ий день года
Комментарии:
Величина, выдаваемая для года, является числом лет, начиная с 1900, а
См. также:
time
define_c_func
Синтаксис:
include dll.e
i1 = define_c_func(x1, x2, s1, i2)
Описание:
Выдаёт номер (идентификатор) подпрограммы для заданной Си-функции или же функции машинного кода. Аргументами служат характеристики заданной функции. Выданный номер i1 используется далее в качестве первого аргумента при вызове подпрограммы c_func(), которая и запускает заданную внешнюю функцию на исполнение из Euphoria.