|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » [архив].: NSIS - все вопросы :. |
|
[архив].: NSIS - все вопросы :.
|
Ветеран Сообщения: 1216 |
Профиль | Отправить PM | Цитировать
|
|
Отправлено: 23:35, 17-06-2006 |
Старожил Сообщения: 166
|
Профиль | Отправить PM | Цитировать Привет всем.
Не как не могу разобраться с разбором строк... Из реестра считывается строка вида: Provider=SQLOLEDB;Data Source=W2K3SP2\SQLEXPRESS;Initial Catalog=user_db;Persist Security Info=True;User ID=user;Password=user;Min Pool Size=5; либо Provider=LCPI.IBProvider;Data Source=localhost:C:\Program Files\user\DB\user_db.gdb;ctype=win1251;auto_commit=true;auto_commit_level=0x1000;User ID=user;Password=user; По значению "Provider=" планирую определять тип продукта. Как видите - используется разделитель - ";", как бы с его помощью разбить строку на переменные? Спасибо! |
Отправлено: 17:28, 09-04-2012 | #2501 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2360
|
Профиль | Отправить PM | Цитировать DruOleg,
Можно для начала так : !include "WordFunc.nsh" OutFile Provider.exe Section ${WordFind} "Provider=SQLOLEDB;Data Source=W2K3SP2\SQLEXPRESS;Initial Catalog=user_db;Persist Security Info=True;User ID=user;Password=user;" ";" "+1" $R0 MessageBox MB_OK "$R0" SectionEnd Потом отсекаем "Provider=" |
Отправлено: 18:24, 09-04-2012 | #2502 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать DruOleg, MKN, так будет работать, если подстрока Provider= - в начале строки,
иначе нужен цикл, к примеру в переменную $2 получаем строку из реестра: |
------- Отправлено: 22:38, 09-04-2012 | #2503 |
Ленивый кусок мяса Сообщения: 1986
|
Профиль | Сайт | Отправить PM | Цитировать Дайте мне хоть слово сказать
А можно и воть так: !include "StrFunc.nsh" !include "FileFunc.nsh" ${StrStrAdv} Function TEST StrCpy $0 "Provider=SQLOLEDB;Data Source=W2K3SP2\SQLEXPRESS;Initial Catalog=user_db;Persist Security Info=True;User ID=user;Password=user;" ; В переменную $0 помещаем всю строку StrCpy $1 "Password=" ; В переменную $1 помещаем ключ, значение которого будем определять ${GetOptions} "$0" "$1" $2 ${StrStrAdv} $2 "$2" ";" ">" "<" "0" "0" "1" MessageBox MB_OK "$2" ; В переменной $2 результат FunctionEnd Вроде работает Цитата kotkovets:
|
|
------- Последний раз редактировалось K.A.V., 09-04-2012 в 23:08. Отправлено: 22:58, 09-04-2012 | #2504 |
Ветеран Сообщения: 2360
|
Профиль | Отправить PM | Цитировать K.A.V.,
Расскажи подробнее про ${StrStrAdv}. Когда, как и зачем... ps Хорошо бы в справочнике рассказать про ВСЕ "штучки" ${} используемые в различных Function Header и логических конструкциях. С примерами... |
Последний раз редактировалось MKN, 10-04-2012 в 08:58. Отправлено: 08:51, 10-04-2012 | #2505 |
Ленивый кусок мяса Сообщения: 1986
|
Профиль | Сайт | Отправить PM | Цитировать Цитата MKN:
Я с ней не работал и не разбирал её, первый раз я с ней столкнулся в этой теме, когда у одного из участника возник похожий вопрос "Как получить значения в строке" (в справочнике это страничка Примеры кодов => Работа со строками => Фильтр символа "|": Разбивка значений) Вот тогда я методом "тыка" получил результат В StrFunc.nsi есть пример работы этой команды, я в ней не разбирался, но там какие-то сложные логические действия На данный момент в работе со строками у меня проблем не возникает, и, собственно, в чем-то разбираться пока нет необходимости Вот здесь возникла проблема у человека, мы её решили и я успокоился |
|
------- Отправлено: 09:11, 10-04-2012 | #2506 |
Ветеран Сообщения: 2360
|
Профиль | Отправить PM | Цитировать Оказывается есть описание StrStrAdv : http://nsis.sourceforge.net/StrStrAdv
как и некоторые, перечисленные в StrFunc.nsi Подставляем в http://nsis.sourceforge.net/нужное и ищем... А я искал в доке... Получается в доке, тоже далеко не всё есть... |
Последний раз редактировалось MKN, 10-04-2012 в 10:24. Отправлено: 10:16, 10-04-2012 | #2507 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать Цитата MKN:
причем константу, можно заключать макросы и функции, что очень удобно. !define msgbox "!insertmacro _msgbox" !macro _msgbox text MessageBox MB_OK "${text}" IDOK !macroend Section ${msgbox} MKN SectionEnd затем разрушается, что очень удобно, в отличии от глобальной константы ${msgbox}, где значение этой константы можем поменять - только в функции иницилизации установщика (.OnInit) |
|
------- Отправлено: 11:01, 10-04-2012 | #2508 |
Ветеран Сообщения: 2360
|
Профиль | Отправить PM | Цитировать kotkovets,
Я не совсем это (простое объявление констант) имел ввиду. А разбор конкретных ( ${StrCase} ${StrClb} ${StrIOToNSIS} ${StrLoc} ${StrNSISToIO} ${StrRep} ${StrStr} ${StrStrAdv} ${StrTok} ${StrTrimNewLines} ${StrSort} и т.д. и для разных хедеров (не только для StrFunc) ) с примерами и комментами... Хотя бы тех, что не вошли пока в справочник. Например, сделать пример работы, скажем наугад, - ${StrCase} так : Сначала указываем Syntax : ${StrCase} "ResultVar" "String" "Case" Потом код примера : !include "StrFunc.nsh" ${StrCase} Name "StrCase" OutFile "StrCase.exe" Section MessageBox MB_OK " Преобразуем строку\ $\r$\n Папа у Васи работает в ФСБ\ $\r$\n используя различные ключи" ${StrCase} $0 "Папа у Васи работает в ФСБ" "L" MessageBox MB_OK "Когда используем ключ L, то строка преобразуется так :\ $\r$\n $0" ${StrCase} $0 "Папа у Васи работает в ФСБ" "U" MessageBox MB_OK "Когда используем ключ U, то строка преобразуется так :\ $\r$\n $0" ${StrCase} $0 "Папа у Васи работает в ФСБ" "T" MessageBox MB_OK "Когда используем ключ T, то строка преобразуется так :\ $\r$\n $0" ${StrCase} $0 "Папа у Васи работает в ФСБ" "S" MessageBox MB_OK "Когда используем ключ S, то строка преобразуется так :\ $\r$\n $0" ${StrCase} $0 "Папа у Васи работает в ФСБ" "<>" MessageBox MB_OK "Когда используем ключ <>, то строка преобразуется так : \ $\r$\n $0" SectionEnd И так для всего прочего. Хлопотно конечно и справочник разбухнет, но оно того стОит. Для примеров оформления страниц и для примеров всевозможных вариаций переключения кнопок-чекбоксов , самое лучшее это GIF-анимашки. Ежели сделаешь в коде так, то смотри как это будет выглядеть и главное, как работать, а если так то смотри далее... И если уж после таких примеров будут вопросы.... |
Последний раз редактировалось MKN, 10-04-2012 в 13:03. Отправлено: 11:38, 10-04-2012 | #2509 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать MKN, открывай публикацию своих тестов и "новых неизвестных народу макросов"
а мы добавим в справочник. Цитата MKN:
|
|
------- Отправлено: 15:08, 10-04-2012 | #2510 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Мультимедиа - WinAmp .:[ обсуждение всех версий ]:. | ssaram | Программное обеспечение Windows | 406 | 12-02-2022 19:45 | |
WinstyleMonitor .:[все вопросы]:. | Mr dUSHA | Проект WinStyle | 331 | 12-02-2014 13:15 | |
Delphi - Delphi .: [все вопросы] :. | Serega | Программирование и базы данных | 94 | 04-05-2013 18:45 | |
Доступ - Никак не удаляются файлы (AVI и все остальные форматы) .:[все вопросы]:. | Microsoft Windows 2000/XP | 105 | 30-06-2010 11:58 | ||
Вопросы по создателю инсталляций NSIS | MaxDELETE | Программное обеспечение Windows | 14 | 04-07-2007 10:01 |
|