|
|
  |
Пожелания, Предложения по развитию сюда |
|
|
Zeleax |
3.12.2012, 8:45
|
        
ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010 Группа: Пользователи Наличность: 0 Из: Киев
Пользователь №: 13.093

|
Цитата(Microsoft @ 3.12.2012, 9:37)  Таки да. Будет то что нужно. И еще журнал бы как у инжекта, который пишет все сообшения сферы.
а чем log не устраивает? Цитата Цитата Цитата Кстати, сейчас даже при параметрах вывода в лог "по-умолчанию" там вообще всё порезано, если вызывать логирование из процедуры (proc). У меня только имя скрипта не выводится, ибо его нет у процедуры. Мне бы примерчик, как есть и как и чего хочется. Так может указывать имя вызвавшего скрипта+ имя процедуры?
--------------------
|
|
|
|
Zeleax |
4.12.2012, 8:41
|
        
ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010 Группа: Пользователи Наличность: 0 Из: Киев
Пользователь №: 13.093

|
Уже есть конструкция: IndexOf
Цитата добавил поиск строки в массиве. по-умолчанию ищет точное совпадение, регистронезависимо. 'set %result indexOf ( %arr [noabs] [case] [[startRow [EndRow]] count] (text) )' параметры: noabs - если указано, то ищем подстроку, иначе абсолютное совпадение, кроме регистра case - если указано, то при сравнении учитывается регистр символов count - максимальное число найденых элементов. если > 0, то ищем в направлении "с начала", если < 0, то ищем в направлении "с конца". если не указан, то ищем "все". этот параметр имеет приоритет в порядке распознавания, над начальной и конечной позицией поиска. ищет по столбцам. возвращает адреса найденных элементов в формате 'строка|столбец/'. пример: '3|7/3|8/4|7/4|8/'. его хорошо понимает команда 'set' для присваивания элементов массива пачкой. если ничего не найдено, то вернет пустую строку. если в качестве приемника указана целая переменная ('set #e indexOf...'), то возвращаем номер только одной строки. причем 'count' указывает какое по порядку вхождение нужно искать. если элемент с указанным номером не найден, то результат -1. примеры: set #a indexOf ( %arr case -1 (Test) ) // ищет номер последнего элемента массива %arr, имеюшего значение в точности равное Test (с учетом регистра) set #b indexOf ( %arr (12) ) // ищет номер первого элемента массива %arr, имеюшего значение в точности равное 12 set #c indexOf ( %arr noabs 3 (admin) ) // ищет номер третьего элемента массива %arr, содержащего подстроку 'admin' set %r indexOf ( %arr case 5 15 2 (Passed) ) // просматривает элементы массива %arr с пятой строки по пятнадцатую, и возвращает в массив %r адреса ячеек, содержащих первые два точных совпадения с искомой строкой set %r indexOf ( %a (14) ) // возвращает в массив %r адреса всех ячеек, сорвпадающих с указанной строкой Мне кажется, что нужно её просто расширить и тогда ваша задача будет выглядеть так: Код init_arr %arr door stone tree gold legs set %c indexOf ($msg noabs (%arr) ) Т.е. ищем в строке $msg каждый из элементов массива %arr и результат поиска записываем в массив %c построчно: %c[1 1] 6 // в какой позиции строки $msg было найдено значение %c[1 2] 2 // номер элемента массива %arr, значение которого было найдено Т.е. в данном случае в 6-й позиции строки $msg было найдено значение stone (%arr[2]) Если бы отсутствовала опция noabs, то каждый элемент массива %arr проверялся бы на точное совпадение со всей строкой $msg. Если бы массив %arr был двухмерным, то чтоб можно было бы указывать в качестве источников поиска целую строку - %arr[3]. Т.е. искать каждый элемент 3-й строки массива %arr. Сообщение отредактировал Zeleax - 4.12.2012, 8:47
--------------------
|
|
|
|
|
  |
6 чел. читают эту тему (гостей: 6, скрытых пользователей: 0)
Пользователей: 0
|
|