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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Проблема с IniRead

Ответить
Настройки темы
[решено] Проблема с IniRead

Аватара для Centrinar

Старожил


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

Профиль | Цитировать


Имееться ини файл следующего содержания:
Код: Выделить весь код
[proga]
proga="test1.exe=test1|test2.exe=test2" ;и т.д.
Нужно что бы скрипт выдал GUI окно с названиеями т.е. test1, test2
Мой скрипт:
Код: Выделить весь код
......
$sName1=IniRead (@ScriptDir & "\config.ini", "proga", "proga", "")
$sProgName = StringRegExpReplace($sName1, '^.*=', '')
$sProgExe = StringRegExpReplace($sName1, '=.*$', '')
......
Но он читает только одно название

Отправлено: 22:11, 15-06-2010

 

Аватара для beve

Старожил


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

Профиль | Отправить 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



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Centrinar

Старожил


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

Профиль | Цитировать


А может сразу подскажете, как сделать что бы скрипт находил в ини файле нужное нам $sProgName и $sProgExe и удолял их вместе со знаком "=". Например из proga="test1.exe=test1|test2.exe=test2" удалить только test1.exe=test1, а остальное оставить. Причем надо именно сделать поиск т.к. параметр proga в ини файле может меняться. СПАСИБО

Отправлено: 01:23, 16-06-2010 | #3


Аватара для madmasles

Ветеран


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

Профиль | Отправить 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 & '"')
Структура ини-файла:
Код: Выделить весь код
[proga]
proga="test1.exe=test1|test2.exe=test2|test3.exe=test3|test4.exe=test4"

Последний раз редактировалось madmasles, 16-06-2010 в 08:47.

Это сообщение посчитали полезным следующие участники:

Отправлено: 08:17, 16-06-2010 | #4


Аватара для beve

Старожил


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

Профиль | Отправить 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


Аватара для beve

Старожил


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

Профиль | Отправить 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



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Проблема с IniRead

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интернет - 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




 
Переход