В этих условиях ни control-c, ни control-Break не будут выданы как управляющие символы в операционную систему, если даже вы читаете состояние клавиатуры. Вы сможете только обнаружить, что нажатия состоялись, вызвав check_break().
Пример:
k = get_key()
if check_break() then
temp = graphics_mode(-1)
puts(1, "Программа завершается ...")
save_all_user_data()
abort(1)
end if
См. также:
allow_break, get_key
clear_screen
Синтаксис:
clear_screen()
Описание:
Очищает экран, заполняя его текущим фоновым цветом (этот цвет может быть также задан с помощью bk_color()) и устанавливая курсор в левый верхний угол экрана.
Комментарии:
Процедура работает во всех текстовых и пиксельных режимах.
См. также:
bk_color, graphics_mode
close
Синтаксис:
close(fn)
Описание:
Закрывает файл или устройство, завершив вывод символов, если они ещё оставались в буфере к данному моменту.
Комментарии:
Когда ваша программа заканчивается при нормальном её течении, все открытые файлы и устройства закрываются автоматически, если не были закрыты ранее с помощью команды close(fn).
См. также:
open, flush
command_line
Синтаксис:
s = command_line()
Описание:
Выдаёт ряд, состоящий из строк, в котором каждая строка является словом, введённым в командную строку, с которой была запущена ваша программа. В первом слове будет путь к интерпретатору Euphoria ex.exe, exw.exe или exu, или к вашему связанному исполняемому файлу. В следующем слове будет или имя вашего Euphoria .ex файла, или (опять же) путь к вашему связанному исполняемому файлу. Затем будут идти все те дополнительные слова, которые были введены вами. Вы можете использовать эти слова в вашей программе, например, задавая тот или иной режим её работы. Серии слов можно забирать в кавычки, чтобы тем самым превратить серию слов в единственный аргумент.
Комментарии:
Собственно интерпретаторы Euphoria не используют никаких аргументов командной строки. Но вы можете использовать любые аргументы по своему усмотрению для своих собственных программ.
Если вы преобразовали вашу программу к виду .exe с помощью биндера или транслятора, вы найдете, что аргументы командной строки остались теми же самыми, за исключением первых двух, хотя ваш пользователь уже не вводит "ex" в командной строке (см. примеры ниже).
Пример 1:
-- Пользователь вводит: ex myprog myfile.dat 12345 "the end"
cmd = command_line()
-- cmd будет равно:
{"C:\EUPHORIA\BIN\EX.EXE",
"myprog",
"myfile.dat",
"12345",
"the end"}
Пример 2:
-- Ваша программа окутана, её имя "myprog.exe",
-- и помещена в каталог c:\myfiles
-- Пользователь вводит: myprog myfile.dat 12345 "the end"
cmd = command_line()
-- cmd будет равно:
{"C:\MYFILES\MYPROG.EXE",
"C:\MYFILES\MYPROG.EXE", -- заполнитель места
"myfile.dat",
"12345",
"the end"
}
-- Заметьте, что все аргументы остались теми же, что и в примере 1,
-- исключая первые два. Второй аргумент теперь повторяет первый,
-- и служит просто для того, чтобы сохранить постоянной нумерацию
-- остальных аргументов, независимо от того, имеет ваша программа
-- форму .exe, или нет.
См. также:
getenv
compare
Синтаксис:
i = compare(x1, x2)
Описание:
Выдаёт 0, если объекты x1 и x2 идентичны, 1, если x1 больше чем x2, -1, если x1 меньше чем x2. Считается, что атомы меньше рядов. Ряды сравниваются поэлементно, начиная с первого элемента, до момента, пока не найдено первое различие.
Пример 1:
x = compare({1,2,{3,{4}},5}, {2-1,1+1,{3,{4}},6-1})
-- идентичны, x равно 0
Пример 2:
if compare("ABC", "ABCD") < 0 then -- -1
-- результатом будет истина: ряд ABC считается "меньшим", так как он короче
end if
Пример 3:
x = compare({12345, 99999, -1, 700, 2},
{12345, 99999, -1, 699, 3, 0})
-- x будет равно 1, так как 700 699
Пример 4:
x = compare('a', "a")
-- x будет равно -1, так как 'a' является атомом,
-- в то время как "a" является рядом длины 1
См. также:
equal, операции сравнения, операции на рядах
cos
Синтаксис:
x2 = cos(x1)
Описание:
Вычисляет и выдаёт косинус x1, где x1 выражено в радианах.
Комментарии:
Данная функция применима к атомам или ко всем элементам ряда.
Пример:
x = cos({.5, .6, .7})
-- x равно {0.8775826, 0.8253356, 0.7648422}
См. также:
sin, tan, log, sqrt
crash_file
Синтаксис:
include machine.e
crash_file(s)
Описание:
Задаёт представленное в виде ряда s имя файла, предназначенного для вывода диагностической информации, когда Euphoria вынуждена аварийно остановить вашу программу из-за ошибки, обнаруженной во время компиляции или во время работы.
Комментарии:
Обычно Euphoria печатает диагностическое сообщение вроде "syntax error" или "divide by zero" на экране, одновременно выводя отладочную информацию в файл ex.err, который всегда располагается в текущем каталоге.
Вызывая crash_file(), вы можете управлять именами файла и каталога, в которых будет записываться отладочная информация.
Ряд s может быть пустым, т.е. "". В этом случае диагностическая или отладочная информация не будет выводиться ни на экран, ни в файл. Ряд s может также иметь форму "NUL" или "/dev/null", в этом случае диагностическая информация будет выводиться на экран, но в файл ex.err ничего не будет записано.
Вы можете вызывать crash_file() столько раз, сколько это нужно, в различных частях вашей программы. В случае таких многократных вызовов будет использоваться тот файл, который был задан в последней команде crash_file(), стоящей перед точкой возникновения ошибки .
Пример:
crash_file("\\tmp\\mybug")
См. также:
abort, crash_message, crash_routine, отладка и профилирование
crash_message
Синтаксис:
include machine.e
crash_message(s)
Описание:
Задаёт сообщение, представленное в виде ряда s, которое будет выведено на экран в случае, если Euphoria аварийно остановит вашу программу из-за ошибки, обнаруженной во время работы.
Комментарии:
Обычно Euphoria печатает диагностическое сообщение на экране, например, "subscript out of bounds" (индекс вне границ) или "divide by zero" (деление на ноль), сопровождая его распечаткой отладочной информации в файле ex.err. Эти сообщения об ошибках будут малопонятны для тех ваших пользователей, которые сами не являются программистами Euphoria. Но вызывая crash_message(), вы сможете управлять содержимым сообщений, появляющихся на экране, чтобы наиболее полно учесть уровень понимания аварийной ситуации пользователями вашей программы. При этом вся отладочная информация будет ещё и распечатываться в файле ex.err, так что вы не потеряете никаких данных об ошибке, пользуясь этой дополнительной возможностью и подправляя стандартные сообщения.