Доброе время суток. Необходимо отсортировать ключи в каждой секции
Xabib2302 Сообщения 95 Репутация -1 11 Дек 2019 #1 Доброе время суток. Необходимо отсортировать ключи в каждой секции
Alecsis Осваивающий Сообщения 128 Репутация 46 12 Дек 2019 #2 Привет! Что-то в этом роде, с минимальной «защитой от дурака»: Код: #pragma compile(Console, True) Opt('MustDeclareVars', True) #include <Array.au3> Local _ $sIniFile, _ ; имя .ini-файла $aIniSNames, _ ; список имён секций $aIniKeys ; массив имён/значений ключей секции ; имя .ini строим по правилу <имя скипта без расширения>.ini ; $sIniFile = StringLeft(@ScriptName, StringLen(@ScriptName)-4) & '.ini' ; $aIniSNames = IniReadSectionNames($sIniFile) If @error Then ConsoleWrite('*** Error *** failed on ' & $sIniFile & @CR) Exit 362 EndIf ; Local $i For $i = 1 To $aIniSNames[0] ; в цикле поимённо перелопачиваем найденные секции $aIniKeys = IniReadSection($sIniFile, $aIniSNames[$i]) If @error Then ConsoleWrite('*** Error *** read failed on section ' & $aIniSNames[$i] & @CR) ContinueLoop ; что-то не так с секцией, пробуем следующую EndIf _ArrayDisplay($aIniKeys, 'Before sort ' & $aIniSNames[$i]) _ArraySort($aIniKeys, 0, 1) If @error Then ConsoleWrite('*** Error *** sort failed on section ' & $aIniSNames[$i] & @CR) ContinueLoop ; что-то не так с ключами в секции, пробуем следующую EndIf _ArrayDisplay($aIniKeys, 'After sort ' & $aIniSNames[$i]) IniWriteSection($sIniFile, $aIniSNames[$i], $aIniKeys) Next ; ConsoleWrite('Ok!' & @CR) Exit 0 P.S. В архиве исходник + пример реального .ini-файла Вложения forum3.zip 1.2 КБ · Просмотры: 4
Привет! Что-то в этом роде, с минимальной «защитой от дурака»: Код: #pragma compile(Console, True) Opt('MustDeclareVars', True) #include <Array.au3> Local _ $sIniFile, _ ; имя .ini-файла $aIniSNames, _ ; список имён секций $aIniKeys ; массив имён/значений ключей секции ; имя .ini строим по правилу <имя скипта без расширения>.ini ; $sIniFile = StringLeft(@ScriptName, StringLen(@ScriptName)-4) & '.ini' ; $aIniSNames = IniReadSectionNames($sIniFile) If @error Then ConsoleWrite('*** Error *** failed on ' & $sIniFile & @CR) Exit 362 EndIf ; Local $i For $i = 1 To $aIniSNames[0] ; в цикле поимённо перелопачиваем найденные секции $aIniKeys = IniReadSection($sIniFile, $aIniSNames[$i]) If @error Then ConsoleWrite('*** Error *** read failed on section ' & $aIniSNames[$i] & @CR) ContinueLoop ; что-то не так с секцией, пробуем следующую EndIf _ArrayDisplay($aIniKeys, 'Before sort ' & $aIniSNames[$i]) _ArraySort($aIniKeys, 0, 1) If @error Then ConsoleWrite('*** Error *** sort failed on section ' & $aIniSNames[$i] & @CR) ContinueLoop ; что-то не так с ключами в секции, пробуем следующую EndIf _ArrayDisplay($aIniKeys, 'After sort ' & $aIniSNames[$i]) IniWriteSection($sIniFile, $aIniSNames[$i], $aIniKeys) Next ; ConsoleWrite('Ok!' & @CR) Exit 0 P.S. В архиве исходник + пример реального .ini-файла