» Получаем значение параметра в строке

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

Возникал следющий вопрос: Как получить значение параметра в строке, когда строка имеет вид:

Provider=SQLOLEDB;Data Source=W2K3SP2\SQLEXPRESS;Initial Catalog=user_db;Persist Security Info=True;User ID=user;Password=user;
Задача была следующей: получить значение параметра Password
Эти примеры смогут определить значение параметра вне зависимости от его порядка в строке, смысл фильтра - определени со знаком-разделителем параметров ;

Пример решения №1 - K.A.V.
Пример решения №2 - MKN


Пример №1
В начале кода:
!include "StrFunc.nsh"
!include "FileFunc.nsh"
${StrStrAdv}

Предположу, что наша строка хранится в переменной $0
Function TEST1
StrCpy $0 "Provider=SQLOLEDB;Data Source=W2K3SP2\SQLEXPRESS;Initial Catalog=user_db;Persist Security Info=True;User ID=user;Password=user;"
;  В переменную $0 помещаем всю строку

${GetOptions} "$0" "Password=" $1
${StrStrAdv} $1 "$1" ";" ">" "<" "0" "0" "1"

;  В переменной $1 результат - user
FunctionEnd


Пример №2
В начале кода:
!include "WordFunc.nsh"

Предположу, что наша строка хранится в переменной $0
Function TEST2

StrCpy $0 "Provider=SQLOLEDB;Data Source=W2K3SP2\SQLEXPRESS;Initial Catalog=user_db;Persist Security Info=True;User ID=user;Password=user;"

${WordFind2X} "$0" "Password=" ";" "+1" $1

;  В переменной $1 результат - user

FunctionEnd