Имя пути, которое вы подаёте в walk_dir(), не должно содержать символов догадок (* или ?). При каждом вызове функция работает только с единственным каталогом (и его подкаталогами), имя которого подано в неё в качестве аргумента.
Пример:
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
where
Синтаксис:
include file.e
a1 = where(fn)
Описание:
Данная функция выдаёт текущую байтовую позицию в файле fn. Байтовая позиция обновляется при чтении, записи или переходах в файле. Эта позиция даёт место в файле, где очередной байт буден прочитан или записан.
См. также:
seek, open
wildcard_file
Синтаксис:
include wildcard.e
i = wildcard_file(st1, st2)
Описание:
Выдаёт 1 (истина), если имя файла st2 совпало с вашей догадкой (маской, шаблоном) st1. Выдаёт 0 (ложь) в противном случае. Данная функция похожа на ту, которая имеется в DOS для шаблонных операций, но в некоторых случаях лучше неё. Символ догадки '*' означает 0 или более символов, допустимых в именах файлов, символ догадки '?' означает единственный любой из допустимых символов. Под Linux и FreeBSD сравнение символов чувствительно к регистру, то есть, строчные и прописные буквы не равнозначны. Под DOS и Windows - не чувствительно, строчные и прописные буквы равнозначны.
Комментарии:
Вы можете использовать эту функцию для проверки выходных данных функции dir(), чтобы выделять именно те файлы, которые требуются пользователю вашей программы.
В функции DOS "*ABC.*" дает шаблон для всех файлов. Функция же wildcard_file("*ABC.*", s) выделит те файлы, имя которых заканчивается буквами "ABC" (как вы и ожидаете).
Пример 1:
i = wildcard_file("AB*CD.?", "aB123cD.e")
-- i будет равно 1 под DOS или Windows, но будет равно 0 под Linux или FreeBSD
Пример 2:
i = wildcard_file("AB*CD.?", "abcd.ex")
-- i будет равно 0 под всеми системами, так как расширение имени
-- файла содержит 2 символа, а не 1.
Пример программы:
bin\search.ex
См. также:
wildcard_match, dir
wildcard_match
Синтаксис:
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
wrap
Синтаксис:
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
xor_bits
Синтаксис:
x3 = xor_bits(x1, x2)
Описание:
Выполняет логическую операцию XOR (исключающее ИЛИ) над соответствующими битами в x1 и x2. Бит x3 будет равен 1, когда один из соответствующих битов в x1 или x2 равен 1, в других случаях будет равен 0.
Комментарии:
Аргументы данной функции могут быть атомами или рядами. В случае рядов применяются правила операций на рядах.
Аргументы должны быть представимы 32-битными числами, со знаком или без знака.
Если вы намерены манипулировать полными 32-битными величинами, вы должны объявить ваши переменные как atom, но не как integer. Тип integer в Euphoria ограничен 31-м битом.
Результаты трактуются как числа со знаком. Они будут отрицательными, когда старший бит равен 1.
Пример:
a = xor_bits(#0110, #1010)
-- a будет равно #1100
См. также:
and_bits, or_bits, not_bits, int_to_bits, int_to_bytes
...