Чтение значений из INI-файла в массив строк

#arrays #ini #autoit

#массивы #ini #автоматический запуск

Вопрос:

Я решил иметь сопутствующий файл .ini с исполняемым файлом, чтобы мне не приходилось жестко кодировать элементы, которые появляются в выпадающем меню. Я создал файл .ini и, используя функцию IniReadSection, я смог просмотреть раздел и вывести каждую пару Ключ = значение в этом разделе.

Как бы я мог поместить значение только в строковый массив? Я пишу эту утилиту с помощью AutoIt.

Ответ №1:

Я создал этот ini-файл:

 [JHamill]
key1=value1
key2=value2
key3=value3
 

Я взял немного кода из примера IniReadSection и изменил его, чтобы иметь возможность использовать его для выпадающего меню.

 $var = IniReadSection("test.ini", "JHamill")

$str = ""
For $i = 1 To $var[0][0]
    $str amp;= $var[$i][1] amp; "|"
Next
$str = StringTrimRight($str, 1)

GUICreate("JHamill GUI combo")

GUICtrlCreateCombo("", 10, 10)
GUICtrlSetData(-1, $str)

GUISetState()

While 1
    $msg = GUIGetMsg()

    If $msg = -3 Then ExitLoop
WEnd
 

Здесь вы видите, что вам не нужно создавать новый массив, чтобы он работал. Но поскольку вы спросили, здесь то же самое, сначала создав новый массив, скопировав только элементы value, а затем используя этот массив для заполнения поля со списком:

 #include <Array.au3>

$var = IniReadSection("test.ini", "JHamill")

Local $arr[$var[0][0]]
For $i = 1 To $var[0][0]
    $arr[$i-1] = $var[$i][1]
Next
_ArrayDisplay($arr)