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

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

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

Аватара для FlatX007

Ветеран


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

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


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

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

Отправлено: 17:11, 23-01-2010

 

Новый участник


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

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


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

Отправлено: 18:18, 23-01-2010 | #2



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

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


Аватара для FlatX007

Ветеран


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

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


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

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


Новый участник


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

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


Код: Выделить весь код
#Include <Array.au3>

$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
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:50, 23-01-2010 | #4


Аватара для FlatX007

Ветеран


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

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


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

Отправлено: 19:21, 23-01-2010 | #5


Новый участник


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

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


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

Цитата FlatX007:
Во первых с ошибками и не работает ... я тоже думал просто сначало »
$fINI - путь к ini-файлу
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:37, 23-01-2010 | #6


Аватара для Creat0R

Must AutoIt


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

Профиль | Сайт | Отправить PM | Цитировать


Код: Выделить весь код
#Include <Array.au3>

$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

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

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

Отправлено: 22:14, 23-01-2010 | #7


Аватара для FlatX007

Ветеран


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

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


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

Отправлено: 22:49, 23-01-2010 | #8


Аватара для Creat0R

Must AutoIt


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

Профиль | Сайт | Отправить PM | Цитировать


Цитата FlatX007:
как мне вытащить из этого массива что либо ? »
Код: Выделить весь код
$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

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

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

Отправлено: 00:15, 24-01-2010 | #9


Аватара для FlatX007

Ветеран


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

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


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

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

Код: Выделить весь код
#Include <Array.au3>

;~ $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)
Вообщем ничего не понятно ... и ничего не получается.

Отправлено: 09:53, 24-01-2010 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
HDD - [решено] Проблема винчестера и разделов (потеря разделов) SylverFuntik Накопители (SSD, HDD, USB Flash) 23 06-04-2010 01:42
Разное - Параметр /3GB файла boot.ini в Windows XP. Mixa7 Microsoft Windows 2000/XP 17 24-02-2010 13:08
[решено] синхронизировать время из ini файла Lodoss AutoIt 1 26-03-2009 10:23
Загрузка - [решено] Что должно быть в параметре load файла SYSTEM.INI? Котяра Microsoft Windows 2000/XP 3 12-12-2008 21:07
Разные имена разделов реестра при каждой установке Windows Solitude Автоматическая установка Windows 2000/XP/2003 5 11-02-2005 13:53




 
Переход