» StrCmp: сравниваем значения

K.A.V.
www.oszone.net
22.02.2010
Автор: kotkovets
Последнее обновление: 4.12.2010

Часто используемая команда при работе со строками - StrCmp
Данная команда сравнивает какие-либо значения. Значения могут быть числовыми и буквенными.
StrCmp str1 str2 [метка перехода, если значения равны] [метка перехода, если значения не равны]
Вариант на относительном переходе:
StrCpy $0 "a string"  #помещаем значение "a string в переменную $0
StrCmp $0 "a string" 0 +2
MessageBox MB_OK "$$0=a string"
Число 0 здесь означает, если значения равны - переход к следующей команде.
Число +2 здесь означает, если значения не равны, то пропустить одну команду, относительно команды StrCmp
и перейти к следующей строке кода. Если значения не будут равны - MessageBox не выполнится.
Вариант на безусловном переходе:
StrCmp $0 "a string" Well Unequal
Well:
  MessageBox MB_OK "Значения равны"
  Goto Next
Unequal:
  MessageBox MB_OK "Значения не равны"
Next:
Если значения равны, то переход к метке Well.
В противном случае - переход к метке Unequal
Вы наверно зададите вопрос: А зачем здесь команда Goto ?
Так как команды скрипта NSIS выполняются последовательно, в случае равенства значений мы перейдем к метке Well
и следовательно выполнятся все команды скрипта, а нам это не нужно, с помощью команды Goto
мы "перепрыгиваем" метку Unequal, переходим сразу к метке Next
Так же существует команда StrCmpS, это то же самое, что StrCmp, но чувствительна к регистру в значениях.
StrCmpS $0 "a StrinG" 0 +2
MessageBox MB_OK "$$0=a StrinG"