[решено] Считать инфу из разделов INI файла в разные массивы.

Аватара пользователя
FlatX007

[решено] Считать инфу из разделов INI файла в разные массивы.

Сообщение FlatX007 »

Вообщем интересует как считать инфу(все ключи и значения) из разделов INI файла в разные! массивы. По одному массиву для каждого раздела. Или в многомерный массив. Не знаю как лучше.



Я знаю как это сделать ... но если разделов 20 или 30 ... неохота для каждого прописывать.
Аватара пользователя
FlatX007

Re: [решено] Считать инфу из разделов INI файла в разные массивы.

Сообщение FlatX007 »

Цитата FlatX007:



Я знаю как это сделать ... но если разделов 20 или 30 ... неохота для каждого прописывать.
[решено] Считать инфу из разделов INI файла в разные массивы.
Аватара пользователя
asdf8

Re: [решено] Считать инфу из разделов INI файла в разные массивы.

Сообщение asdf8 »

Код:

Код: Выделить всё

#Include 
$fINI= @ScriptDir & '\File.ini'
$var = IniReadSectionNames($fINI)
If Not @error Then
	Dim $ar[UBound($var)]
	For $i=1 To $var[0]
		$ar[$i]=IniReadSection($fINI,$var[$i])
		If Not @error Then _ArrayDisplay($ar[$i])
	Next
EndIf
Аватара пользователя
FlatX007

Re: [решено] Считать инфу из разделов INI файла в разные массивы.

Сообщение FlatX007 »

Во первых с ошибками и не работает ... я тоже думал просто сначало.
Аватара пользователя
FlatX007

Re: [решено] Считать инфу из разделов INI файла в разные массивы.

Сообщение FlatX007 »

Цитата FlatX007:



для каждого прописывать
[решено] Считать инфу из разделов INI файла в разные массивы.




Тогда я ничего не понял: что прописывать?




Цитата FlatX007:



Во первых с ошибками и не работает ... я тоже думал просто сначало
[решено] Считать инфу из разделов INI файла в разные массивы.




$fINI - путь к ini-файлу
Аватара пользователя
Creat0R

Re: [решено] Считать инфу из разделов INI файла в разные массивы.

Сообщение Creat0R »

Код:

Код: Выделить всё

#Include 
$sIniFile = @DesktopDir & '\File.ini'
$aSectNames = IniReadSectionNames($sIniFile)
If IsArray($aSectNames) Then
    Dim $aAllSections[$aSectNames[0]+1]
    For $i = 1 To $aSectNames[0]
        $aCurrentSection = IniReadSection($sIniFile, $aSectNames[$i])
        If Not @error Then
            $aCurrentSection[0][1] = $aSectNames[$i]
            $aAllSections[$i] = $aCurrentSection
            _ArrayDisplay($aAllSections[$i])
        EndIf
    Next
EndIf
Аватара пользователя
FlatX007

Re: [решено] Считать инфу из разделов INI файла в разные массивы.

Сообщение FlatX007 »

Ничё непонимаю ... и как мне вытащить из этого массива что либо ?
Аватара пользователя
Creat0R

Re: [решено] Считать инфу из разделов INI файла в разные массивы.

Сообщение Creat0R »

Цитата FlatX007:



как мне вытащить из этого массива что либо ?
[решено] Считать инфу из разделов INI файла в разные массивы.






Код:

Код: Выделить всё

$sIniFile = @DesktopDir & '\File.ini'
$aSectNames = IniReadSectionNames($sIniFile)
If Not IsArray($aSectNames) Then Exit MsgBox(16, 'Error', 'No Sections found (or file does not exists).')
Dim $aAllSections[$aSectNames[0] + 1]
$aAllSections[0] = $aSectNames[0]
For $i = 1 To $aSectNames[0]
    $aCurrentSection = IniReadSection($sIniFile, $aSectNames[$i])
    If Not @error Then
        $aCurrentSection[0][1] = $aSectNames[$i]
        $aAllSections[$i] = $aCurrentSection
    EndIf
Next
;Вытаскиваем данные из массива массивов :)...
For $j = 1 To $aAllSections[0]
    ;Получаем массив из N-ого элемента общего массива (содержит массив в каждом элементе)
    $aCurrentSection = $aAllSections[$j]
    ;Печатаем имя секций, которое содержится в первом элементе второго измерения (это двумерный массив)
    ConsoleWrite("[" & $aCurrentSection[0][1] & "]" & @CRLF)
    ;Печатаем все ключи и их значения
    For $x = 1 To $aCurrentSection[0][0]
        ConsoleWrite($aCurrentSection[$x][0] & "=" & $aCurrentSection[$x][1] & @CRLF)
    Next
    ConsoleWrite(@CRLF)
Next
Аватара пользователя
FlatX007

Re: [решено] Считать инфу из разделов INI файла в разные массивы.

Сообщение FlatX007 »

И как мне вывести в окно сообщения (MsgBox) - первое значение, допустим, из 2 раздела (всего их 5) INI файла - что бы (MsgBox) - находился не в цикле.

Я вопрос наверно не правильно задал, мне нужно по другому.



Мне вот так нужно заполнить массив ... только у меня не работает почему-то, заполняется только последний элемент массива елементами из последней секции INI файла.





Код:

Код: Выделить всё

#Include 
;~ $sPathIni = @ScriptDir & '\Original Library\Olf.ini'
$sPathIni = @WindowsDir & "\win.ini"
$aSectionNames = IniReadSectionNames($sPathIni)
If Not (@error) Then
    For $i = 1 To $aSectionNames[0]
        $aIniRead = IniReadSection($sPathIni, $aSectionNames[$i])
        If Not (@error) Then
            Global $aArray[UBound($aSectionNames)][UBound($aIniRead)]
            For $i1 = 1 To $aIniRead[0][0]
                $aArray[$i][$i1] = $aIniRead[$i1][1]
            Next
        EndIf
    Next
EndIf
_ArrayDisplay($aArray)

Вообщем ничего не понятно ... и ничего не получается.
Ответить

Вернуться в «AutoIt»