Синтаксис: | include file.e unlock_file(fn, s) |
Описание: | Отпирает открытый файл fn или участок файла fn. Данный файл должен быть перед этим заперт с использованием lock_file(). Под DOS32 и WIN32 вы можете отпереть некоторый участок внутри файла, задавая параметр s в виде {первый_байт, последний_байт}. Этот же самый участок в файле должен быть перед этим заперт с использованием lock_file(). Под Linux в данной версии вы можете запирать и отпирать только весь файл целиком. Параметр s должен быть пустым рядом {}, если отпирается весь файл. Под Linux s всегда должен быть пустым рядом {}. |
Комментарии: | Вы должны отпереть запертый файл, чтобы сделать возможным использование его другими программами (процессами). |
Любые файлы, которые вы запираете из своей программы, будут автоматически отперты при завершении вашей программы. | |
См. lock_file() для изучения дальнейших комментариев и примера. | |
См. также: | lock_file |
Синтаксис: | include machine.e --(или safe.e) unregister_block(a) |
Описание: | Удаляет блок памяти из списка безопасных блоков, поддерживаемого safe.e (отладочной версией machine.e). Блок начинается по адресу a. |
Комментарии: | Данная процедура предназначена для использования только в отладочных целях. Применяйте ее для вычеркивания блоков памяти, которые вы ранее внесли в список с помощью процедуры register_block(). Вычеркивая (удаляя) блок, вы исключаете его из списка безопасных блоков, поддерживаемого safe.e. Это предохраняет вашу программу от любых операций чтения-записи по адресам внутри блока. |
См. register_block() для уяснения деталей и изучения примера. | |
См. также: | register_block, safe.e |
Синтаксис: | include wildcard.e x2 = upper(x1) |
Описание: | Преобразует атом или ряд к верхнему регистру. |
Пример: | |
s = upper("Euphoria") -- s равно "EUPHORIA" a = upper('g') -- a равно 'G' s = upper({"Euphoria", "Programming"}) -- s равно {"EUPHORIA", "PROGRAMMING"} | |
См. также: | lower |
Платформа: | DOS32 |
Синтаксис: | include machine.e use_vesa(i) |
Описание: | use_vesa(1) переведет Euphoria в режим подчинения рекомендациям графического стандарта VESA. Это может улучшить работу программ Euphoria в режимах SVGA графики с некоторыми видеоплатами. use_vesa(0) восстановит оригинальный метод, применяемый Euphoria при работе с видеоплатами. |
Комментарии: | Большинство людей может не обращать на эту процедуру
внимания. Однако, если возникли трудности при переходе в
графические режимы SVGA, вы можете попытаться выполнить
use_vesa(1) в начале вашей программы перед любыми вызовами
функции graphics_mode().
Аргументы в use_vesa(), отличающиеся от 0 или 1, не должны использоваться. |
Пример: | |
use_vesa(1) fail = graphics_mode(261) | |
См. также: | graphics_mode |
Синтаксис: | include get.e s = value(st) |
Описание: | Читает строковое представление объекта Euphoria и расчитывает его величину. Выдает 2-х элементный ряд вида, {error_status, value}, где элемент error_status может быть одним из: |
GET_SUCCESS -- найдено законное представление объекта GET_EOF -- конец строки обнаружен слишком быстро GET_FAIL -- неправильный синтаксис | |
Комментарии: | Данная функция работает точно так же как и get(), но чтение
производится из строки, а не из файла и не с устройства.
После прочтения одного законного представления объекта Euphoria value() приостанавливает дальнейшее чтение и игнорирует любые добавочные символы в строке. Например: "36" и "36P" - оба случая дадут вам {GET_SUCCESS, 36}. |
Пример 1: | |
s = value("12345"} -- s равно {GET_SUCCESS, 12345} | |
Пример 2: | |
s = value("{0, 1, -99.9}") -- s равно {GET_SUCCESS, {0, 1, -99.9}} | |
Пример 3: | |
s = value("+++") -- s равно {GET_FAIL, 0} | |
См. также: | get, sprintf, print |
Платформа: | DOS32, Linux |
Синтаксис: | include graphics.e s = video_config() |
Описание: | Выдает ряд величин, описывающих конфигурацию вашей
видеоподсистемы: {цветной монитор?, графический режим, число строк текста, число колонок текста, число пикселов по горизонтали, число пикселов по вертикали, число цветов, число страниц} В библиотечном файле graphics.e определены следующие константы: |
global constant VC_COLOR = 1, VC_MODE = 2, VC_LINES = 3, VC_COLUMNS = 4, VC_XPIXELS = 5, VC_YPIXELS = 6, VC_NCOLORS = 7, VC_PAGES = 8 | |
Комментарии: | Данная функция помогает вам так выбрать параметры прогона вашей
программы, что она будет работать правильно во многих графических режимах.
На PC можно встретить два типа графических режимов. Первый тип, текстовый режим, позволяет выводить на экран только лишь текст. Второй тип, пиксельно-графический режим, позволяет выводить пикселы, или точки, в различных цветах, а одновременно и текст. Вы можете сказать, что система находится в текстовом режиме, если поля VC_XPIXELS и VC_YPIXELS равны 0. Такие библиотечные процедуры, как polygon(), draw_line() и ellipse(), работают только в пиксельно-графическом режиме. |
Пример: | |
vc = video_config() -- в режиме 3 с 25-строками текста: -- vc равно {1, 3, 25, 80, 0, 0, 32, 8} | |
См. также: | graphics_mode |
Синтаксис: | include get.e i = wait_key() |
Описание: | Выдает код клавиши, нажатой пользователем на клавиатуре. Код выдается в момент отжатия клавиши. |
Комментарии: | Вы можете получить тот же самый результат с get_key(), если напишете: |
while 1 do k = get_key() if k != -1 then exit end if end while | |
Однако на многозадачных системах, подобных
Windows
или Linux, такое "занятое ожидание"
с get_key() будет снижать производительность системы.
Процедура же wait_key() позволяет операционной системе выполнять другую
полезную работу, пока ваша программа ожидает нажатия на клавишу.
Вы можете использовать также getc(0), так как файлу номер 0 соответствует ввод с клавиатуры, но при этом не будут вырабатываться специальные коды от функциональных клавиш, клавиш со стрелками и т.п. | |
См. также: | get_key, getc |
Синтаксис: | include file.e i1 = walk_dir(st, i2, i3) |
Описание: | Данная процедура "пройдется" по каталогу с именем, заданным
в st, обрабатывая файлы. i2 является
идентификатором процедуры,
соответствующим той процедуре, которую вы хотите применить для обработки
файлов каталога.
walk_dir() будет вызывать вашу процедуру обработки файлов для каждого
файла и подкаталога в st. Если i3 не равно 0 (TRUE), подкаталоги
в st будут пройдены рекурсивно. Процедура, которую вы применяете для обработки файлов, должна воспринимать имена путей и входы dir() для каждого файла и подкаталога. Она должна также выдавать 0 для продолжения прохождения после успешного окончания работы с файлом или не-ноль, чтобы остановить выполнение walk_dir(). |
Комментарии: | Данный механизм позволяет вам написать простую функцию для требуемой
обработки каждого из файлов, в то время как walk_dir() обеспечит
процесс автоматической навигации по файлам и подкаталогам.
По умолчанию файлы и каталоги будут пройдены в алфавитном порядке. Если вам необходим другой порядок, установите соответствующим образом глобальную переменную my_dir для идентификатора процедуры своей собственной модифицированной функции dir(), которая должна сортировать входы каталога в необходимом вам порядке. Просмотрите для уяснения деталей текст исходной функции dir() в файле file.e. |
Пример: | |
function look_at(sequence path_name, sequence entry) -- данная функция воспринимает два ряда как аргументы printf(1, "%s\\%s: %d\n", {path_name, entry[D_NAME], entry[D_SIZE]}) return 0 -- проход продолжается end function exit_code = walk_dir("C:\\MYFILES", routine_id("look_at"), TRUE) | |
Пример программы: | euphoria\bin\search.ex |
См. также: | dir, current_dir |
Синтаксис: | include file.e i = where(fn) |
Описание: | Данная функция выдает текущую байтовую позицию в файле fn. Байтовая позиция обновляется при чтении, записи или переходах в файле. Эта позиция дает место в файле, где очередной байт буден прочитан или записан. |
См. также: | seek, open |
Синтаксис: | include wildcard.e i = wildcard_file(st1, st2) |
Описание: | Выдает 1 (истина), если имя файла st2 совпало с вашей догадкой (маской, шаблоном) st1. Выдает 0 (ложь) в противном случае. Данная функция похожа на ту, которая имеется в DOS для шаблонных операций, но в некоторых случаях лучше нее. * означает 0 или более символов, допустимых в именах файлов, ? означает единственный любой из допустимых символов. Сравнение символов не чувствительно к регистру, то есть, строчные и прописные буквы равнозначны. |
Комментарии: | Вы можете использовать эту функцию для проверки выходных
данных функции dir(), чтобы выделять именно те файлы,
которые требуются пользователю вашей программы.
В функции DOS "*ABC.*" дает шаблон для всех файлов. Функция же wildcard_file("*ABC.*", s) выделит те файлы, имя которых заканчивается буквами "ABC" (как вы и ожидаете). |
Пример 1: | |
i = wildcard_file("AB*CD.?", "aB123cD.e") -- i устанолено в 1 | |
Пример 2: | |
i = wildcard_file("AB*CD.?", "abcd.ex") -- i установлено в 0, так как расширение имени файла -- содержит 2 символа, а не 1 | |
Пример программы: | bin\search.ex |
См. также: | wildcard_match, dir |
Синтаксис: | include wildcard.e i = wildcard_match(st1, st2) |
Описание: | Данная функция выполняет общее сравнение строки с образцом, который может содержать и символы догадок * и ? . Выдается 1 (истина), если строка st2 совпадает с образцом st1. В противном случае выдается 0 (ложь). * означает любые 0 или более символов. ? означает любой единственный символ. Сравнение чувствительно к регистру, то есть, строчные и прописные буквы различаются. |
Комментарии: | Если вам необходимо нечувствительное к регистру сравнение,
подайте оба ряда st1 и st2 в функцию upper() или lower()
перед тем как вызвать wildcard_match().
Если вам необходимо обнаружить образец в любом месте внутри исследуемой строки, добавьте * к обоим концам образца: |
i = wildcard_match('*' & pattern & '*', string) | |
В настоящее время нет пока способа задать собственно символы * или ? в образце так, чтобы они не выполняли свою роль шаблонов. | |
Пример 1: | |
i = wildcard_match("A?B*", "AQBXXYY") -- i равно 1 (TRUE) | |
Пример 2: | |
i = wildcard_match("*xyz*", "AAAbbbxyz") -- i равно 1 (TRUE) | |
Пример 3: | |
i = wildcard_match("A*B*C", "a111b222c") -- i равно 0 (FALSE) так как верхний/нижний регистры не совпадают | |
Пример программы: | bin\search.ex |
См. также: | wildcard_file, match, upper, lower, compare |
Синтаксис: | include graphics.e wrap(i) |
Описание: | Разрешает в тексте перенос на следующую строку при достижении правого поля (i = 1) или отсекает длинные строки (i = 0). |
Комментарии: | По умолчанию разрешен перенос.
Используйте wrap() в текстовых режимах или в пиксельно-графических режимах, когда вам необходимо отображать длинные строки текста. |
Пример: | |
puts(1, repeat('x', 100) & "\n\n") -- имеем строку из 80 'x', а ниже строку из 20 'x' wrap(0) puts(1, repeat('x', 100) & "\n\n") -- имеем только одну строку из 80 'x' | |
См. также: | puts, position |
Синтаксис: | x3 = xor_bits(x1, x2) |
Описание: | Выполняет логическую операцию XOR (исключающее OR) над соответствующими битами в x1 и x2. Бит x3 будет равен 1, когда один из соответствующих битов в x1 или x2 равен 1, в других случаях будет равен 0. |
Комментарии: | Аргументы данной функции могут быть атомами или рядами.
В случае рядов применяются правила
действий с рядами.
Аргументы должны быть представимы 32-битными числами, со знаком или без знака. Если вы намерены манипулировать полными 32-битными величинами, вы должны объявить ваши переменные как atom, но не как integer. Тип integer в Euphoria ограничен 31-м битом. Результаты трактуются как числа со знаком. Они будут отрицательными, когда старший бит равен 1. |
Пример 1: | |
a = xor_bits(#0110, #1010) -- a равно #1100 | |
См. также: | and_bits, or_bits, not_bits, int_to_bits, int_to_bytes |