Объект Scripting.Dictionary

Создаёт ассоциативный массив


Свойства массива
Ассоциативный массив, аналогичен одной секции в ini-файле, содержащей строки ключ=значение. Все ключи имеют уникальные имена, используя которые можно получить присвоенные им значения.
Ключ может быть типом данных: строка, числа целое и с плавающей точкой.
Значение может быть типом данных: строка, числа целое и с плавающей точкой, логическое значение, бинарные данные.
КлючЗначение
Key 1Item 1
Key 2Item 2
Key nItem n


Создание объекта

$oDict = ObjCreate('Scripting.Dictionary')


CompareMode

Устанавливает режим сравнения ключей на уникальность:
    0 - Бинарный (учитывает регистр букв), по умолчанию
    1 - Текстовый (не учитывает регистр букв)
    2 - Database

$oDict.CompareMode = 1 ; Устанавливает режим сравнения
$iMode = $oDict.CompareMode ; Возвращает текущий режим сравнения


Key

Устанавливает новое название ключа. Не может быть два одинаковых ключа в объекте. Если происходит переименование не существующего ключа, то это вызывает ошибку. Ключ может быть типом данных: строка, числа целое и с плавающей точкой.

$oDict.Key($vKey) = $vNewKey


Item

Устанавливает или читает новое значение указанного ключа. Значение может быть типом данных: строка, числа целое и с плавающей точкой, логическое значение, бинарные данные.

$oDict.Item($vKey) = $vNewValue ; устанавливает значение или добавляет если не существует
$vValue = $oDict.Item($vKey) ; читает значение


Add

Добавляет ключ $vKey и присваивает ему значение $vValue. Нельзя добавить ключ, если он уже существует в объекте.

$oDict.Add($vKey, $vValue)


Keys

Извлекает все ключи из объекта.

$Array = $oDict.Keys()


Items

Извлекает все значения ключей в объекте.

$Array = $oDict.Items()


Count

Извлекает количество элементов в объекте (ключей).

$iCount = $oDict.Count()


Remove

Удаляет ключ из объекта.

$oDict.Remove($vKey)


RemoveAll

Удаляет все ключи из объекта.

$oDict.RemoveAll()


Exists

Проверяет существование ключа в объекте, возвращает True или False

$fBool = $oDict.Exists($vKey)
If $oDict.Exists($vKey) Then ...


Пример

#include <Array.au3>
Global $aArray[5] = [1, 'строка', 'строка', 1, 'строка']
; удаляет дубликаты из массива, аналогично _ArrayUnique.
$aArray = _ArrayRemoveDuplicates($aArray)
_ArrayDisplay($aArray, 'aArray')

Func _ArrayRemoveDuplicates(Const ByRef $aArray)
    If Not IsArray($aArray) Then Return SetError(1, 0, 0)
    Local $oDict = ObjCreate("Scripting.Dictionary")
    $oDict.CompareMode = 0 ; учитывать регистр букв, бинарное сравнение
    For $i In $aArray
        $oDict.Item($i) ; shown by wraithdu
    Next
    Return $oDict.Keys()
EndFunc   ;==>_ArrayRemoveDuplicates