|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Проблема с IniRead |
|
[решено] Проблема с IniRead
|
Старожил Сообщения: 247 |
Имееться ини файл следующего содержания:
Нужно что бы скрипт выдал GUI окно с названиеями т.е. test1, test2 Мой скрипт: Но он читает только одно название |
|
Отправлено: 22:11, 15-06-2010 |
Старожил Сообщения: 307
|
Профиль | Отправить PM | Цитировать #include <array.au3> $sName=IniRead (@ScriptDir & "\config.ini", "proga", "proga", "") $aNames=StringSplit($sName,"|") if IsArray($aNames) then for $i=1 to $aNames[0] $sProgName = StringRegExpReplace($aNames[$i], '^.*=', '') $sProgExe = StringRegExpReplace($aNames[$i], '=.*$', '') MsgBox(64,"Сообщение", "Название программы: "&$sProgName&@crlf&"Название exe: "&$sProgExe) next endif |
------- Отправлено: 22:47, 15-06-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 247
|
А может сразу подскажете, как сделать что бы скрипт находил в ини файле нужное нам $sProgName и $sProgExe и удолял их вместе со знаком "=". Например из proga="test1.exe=test1|test2.exe=test2" удалить только test1.exe=test1, а остальное оставить. Причем надо именно сделать поиск т.к. параметр proga в ини файле может меняться. СПАСИБО
|
Отправлено: 01:23, 16-06-2010 | #3 |
Ветеран Сообщения: 812
|
Профиль | Отправить PM | Цитировать Centrinar,
Попробуйте так: $IniFile = @ScriptDir & '\My.ini' ; Ваш ини-файл. $sSection = 'proga' ;секция, в которой будем удалять. $sKey = 'proga' ;ключ, в котром будем удалять. $sProgExeDel = 'test1.exe' ;программа для удаления. $sProgNameDel = 'test1' ; имя для удаления $aControl = IniReadSectionNames($IniFile) If @error Then MsgBox(0, 'Ошибка', 'Проблема с ини-файлом.') Exit Else For $i = 1 To $aControl[0] If $aControl[$i] = $sSection Then ExitLoop Next EndIf If $i = $aControl[0] + 1 Then MsgBox(0, 'Ошибка', 'В ини-файле отсутствует указанная секция.') Exit EndIf $sKeyValue = IniRead($IniFile, $sSection, $sKey, 'NoKey') If $sKeyValue = 'NoKey' Then MsgBox(0, 'Ошибка', "В ини-файле отсутствует указанный ключ.") Exit EndIf $sKeyNewValue = StringReplace(StringReplace($sKeyValue, $sProgExeDel & '=' & $sProgNameDel, ''), '||', '|') If StringLeft($sKeyNewValue, 1) = '|' Then $sKeyNewValue = StringTrimLeft($sKeyNewValue, 1) If StringRight($sKeyNewValue, 1) = '|' Then $sKeyNewValue = StringTrimRight($sKeyNewValue, 1) ;MsgBox(0, '', $sKeyValue & @CRLF & $sKeyNewValue) IniWrite($IniFile, $sSection, $sKey, '"' & $sKeyNewValue & '"') |
Последний раз редактировалось madmasles, 16-06-2010 в 08:47. Отправлено: 08:17, 16-06-2010 | #4 |
Старожил Сообщения: 307
|
Профиль | Отправить PM | Цитировать Или так:
$sProgtoDel = 'test1.exe' ;прога для удаления. $sProgNametoDel = 'test1' ; имя exe для удаления $sName=IniRead (@ScriptDir & "\config.ini", "proga", "proga", "") $aNames=StringSplit($sName,"|") $sName="" if IsArray($aNames) then for $i=1 to $aNames[0] $sProgName = StringRegExpReplace($aNames[$i], '^.*=', '') $sProgExe = StringRegExpReplace($aNames[$i], '=.*$', '') if $sProgName <>$sProgNametoDel and $sProgExe<>$sProgtoDel then $sName &=$aNames[$i]&"|" next IniWrite (@ScriptDir & "\config.ini", "proga", "proga", '"'&StringTrimRight($sName, 1)&'"') endif |
|
------- Отправлено: 13:35, 16-06-2010 | #5 |
Старожил Сообщения: 307
|
Профиль | Отправить PM | Цитировать Или, если не нужно отделять название программы и название exe, то еще попроще:
$sProgtoDel = 'test1.exe' ;прога для удаления. $sProgNametoDel = 'test1' ; имя exe для удаления $sName=IniRead (@ScriptDir & "\config.ini", "proga", "proga", "") $aNames=StringSplit($sName,"|") $sName="" if IsArray($aNames) then for $i=1 to $aNames[0] if $aNames[$i]<>$sProgtoDel&"="&$sProgNametoDel then $sName &=$aNames[$i]&"|" next IniWrite (@ScriptDir & "\config.ini", "proga", "proga", '"'&StringTrimRight($sName, 1)&'"') endif |
------- Отправлено: 14:03, 16-06-2010 | #6 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Интернет - Wireless Проблема( или проблема совместимости) | Ahimanu | Microsoft Windows 7 | 0 | 06-03-2010 16:05 | |
2008 - [решено] Проблема с ГП в AD., проблема при создании ГП к отдельным OU | kozemit | Windows Server 2008/2008 R2 | 2 | 15-07-2009 10:52 | |
Разное - Проблема установки Adobe Flash Player и проблема Windows Live | RubinSky | Microsoft Windows 7 | 3 | 26-03-2009 21:23 | |
Ошибка - Странная проблема с кодировкой(похоже проблема с преобразованием кодировок) | Mertvii | Microsoft Windows 2000/XP | 1 | 13-07-2008 16:05 | |
Как быстро и точно определить, в чём проблема? Явная проблема в железе | UTU | Непонятные проблемы с Железом | 16 | 22-05-2006 01:27 |
|