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

В этих условиях ни 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, так что вы не потеряете никаких данных об ошибке, пользуясь этой дополнительной возможностью и подправляя стандартные сообщения.