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

Показать сообщение отдельно

Аватара для Creat0R

Must AutoIt


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

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


В принципе, можно было бы указать постоянный разделитель, но он должен быть опционально задан в параметре. Т.е вся строка может содержать параметры только одного характера, но нужно сделать так, чтобы функцию можно было применять на разные строки. Вот что у меня (не) получилось:

Код: Выделить весь код
If $CmdLine[0] = 0 Then $CmdLineRaw = '/Param="1" /File=C:\Program Files\Some App\File - Name.txt /URL="http://google.com"'

MsgBox(64, "", _
    _GetCmdLine($CmdLineRaw, "/Param=") & @LF & _
    _GetCmdLine($CmdLineRaw, "/URL=") & @LF & _
    _GetCmdLine($CmdLineRaw, "/File="))

Func _GetCmdLine($sCmdLine, $sArgument, $sCmd_Delim='/.*=')
    If Not StringInStr($sCmdLine, $sArgument) Then Return SetError(1, 0, "")

    Local $sRegExp = '(?i)^.*?\Q' & $sArgument & '\E\s*(?:(?:"([^"]*)")|([^"]+)' & $sCmd_Delim & ').*$'
    Local $sRetCmd = StringRegExpReplace($sCmdLine, $sRegExp, '\1\2')
    If $sRetCmd = $sCmdLine Then Return SetError(2, 0, "")

    Return StringStripWS($sRetCmd, 3)
EndFunc
Стоит только убрать кавычки у одного из значении, и возвращается неверное значение. Нужно чтобы при данном раскладе, возвращались все значения вне зависимости от присутствия кавычек у них.

P.S
$sCmd_Delim это и есть указатель на резделитель, т.е в одной строке могут быть только такие разделители: /Param=, или только такие: -Param=, или такие например: -Param:, но не смешанные (как я задумывал в начале).

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 13:03, 01-12-2008 | #1233