Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно
MKN MKN вне форума

Ветеран


Сообщения: 2372
Благодарности: 564

Профиль | Отправить PM | Цитировать


Цитата K.A.V.:
${StrStrAdv}, на страничке документации по ней информации не мало и, нужно сесть, и хорошенько напрячь извилины »
Вот ещё пример использования ${StrStrAdv} , для тех кто не хочет напрягаться (я и сам такой ) :

Синтаксис : ${StrStrAdv} "ResultVar" "String" "SubString" "SearchDirection" "StrInclusionDirection" "IncludeSubString" "Loops" "CaseSensitive"

Код: Выделить весь код
!include "StrFunc.nsh"
${StrStrAdv}

OutFile "StrStrAdv.exe"

Section
MessageBox MB_OK "                                              Преобразуем строку:\
$\r$\n Раз пошли на дело я и Рабинович. Рабинович выпить захотел. Эх, Рабинович !\
$\r$\n                                           используя различные ключи"

StrCpy $0 "Раз пошли на дело я и Рабинович. Рабинович выпить захотел. Эх, Рабинович !"

MessageBox MB_OK 'Например, оставим всё, что находится СЛЕВА от слова "Рабинович". Искать будем с НАЧАЛА строки\
$\r$\n                                                           Для этого устанавливаем :\ 
$\r$\n SubString: "Рабинович"\ 
$\r$\n SearchDirection: ">"\
$\r$\n StrInclusionDirection: "<"'

${StrStrAdv} $1 "$0" "Рабинович" ">" "<" "0" "0" "0"

MessageBox MB_OK "Получаем в переменной :\
$\r$\n            $1"

MessageBox MB_OK 'Ищем "Рабинович" 2 раза с НАЧАЛА. (Т.е. пропускаем, оставляем 2х Рабиновичей)\
$\r$\n                                                  "Loops" установим "2"'

${StrStrAdv} $2 "$0" "Рабинович" ">" "<" "0" "2" "0"

MessageBox MB_OK "Получаем в переменной :\
$\r$\n            $2"

MessageBox MB_OK 'Снова, оставим всё, что находится СЛЕВА от слова "Рабинович". Но искать  будем с КОНЦА строки\
$\r$\n                                                               Для этого устанавливаем :\ 
$\r$\n SubString: "Рабинович"\ 
$\r$\n SearchDirection: "<"  (сменили направление поиска)\
$\r$\n StrInclusionDirection: "<"'

${StrStrAdv} $3 "$0" "Рабинович" "<" "<" "0" "0" "0"

MessageBox MB_OK "Получаем в переменной :\
$\r$\n            $3"

MessageBox MB_OK 'Ищем "Рабинович" с КОНЦА 2 раза. Т.е. "Loops" установим "2"'

${StrStrAdv} $4 "$0" "Рабинович" "<" "<" "0" "2" "0"

MessageBox MB_OK "Получаем в переменной :\
$\r$\n            $4"
SectionEnd
От значения IncludeSubString - 0 или 1 , зависит, будет ли SubString (это то, указанное в строке слово(сочетание), "от которго пляшем" - слева или справа от которого оставляем нужное нам) добавлено к результирующему значению.
******************
(По этому же принципу работает и ${StrStr}, только с ограничением - оставляется только то, что находится справа от SubString плюс сам SubString . ${StrStr} "ResultVar" "String" "SubString")
${StrStrAdv} - это ${StrStr} Advanced
******************
Значение "CaseSensitive" - 0 или 1 - учитывать регистр или нет.

Если подстрока не найдена, то в переменную будет возвращена пустая строка .
Если подстрока пустая, то строка будет возвращена с флагом ошибки.
Если строка пустая, то будет возвращена пустая строка с флагом ошибки.

Последний раз редактировалось MKN, 10-04-2012 в 17:47.


Отправлено: 17:10, 10-04-2012 | #2512