inververs
AutoIT Гуру
- Сообщения
- 2,135
- Репутация
- 465
AutoIt: 3.3.10.0+
Версия: 1.1
Категория: Массивы
Описание: Содержит функцию _Array_Dump которая позволяет просмотреть и востановить структуру и содержание любого массива. Результат представляет собой функцию, которая содержит код востановления исходного массива в первоначальный вид. Результат можно сохранить в файл или вывести в консоль. Нет ограничений на размерность массива*. Нет ограничение на вложенность массивов друг в друга - сохраняет структуру вложенности*
Поддерживает все основные типы данных: Int32, Int64, Double, String, Bool, UserFunction, Function, Ptr/HWnd, Binary, Keyword, Array, Null
Не поддерживается: DLLStruct, Object
Пример:
Выводит в консоль:
Еще примеры:
Файл: Версия: 1.1
История версий:
Источник: autoit-script.ru
Автор(ы): inververs
Примечание: Спасибо C2H5OH за помощь в создании функции.
* Ограничено только возможностями AutoIT. На данный момент максимально можно создать 64-мерный массив.
* Ограничено максимальным уровнем рекурсии. 3900 лимит для x64 и 1900 лимит для x86
UPD: Новая версия: 1.1
Версия: 1.1
Категория: Массивы
Описание: Содержит функцию _Array_Dump которая позволяет просмотреть и востановить структуру и содержание любого массива. Результат представляет собой функцию, которая содержит код востановления исходного массива в первоначальный вид. Результат можно сохранить в файл или вывести в консоль. Нет ограничений на размерность массива*. Нет ограничение на вложенность массивов друг в друга - сохраняет структуру вложенности*
Поддерживает все основные типы данных: Int32, Int64, Double, String, Bool, UserFunction, Function, Ptr/HWnd, Binary, Keyword, Array, Null
Не поддерживается: DLLStruct, Object
Пример:
Код:
Local $test_6[5] = [True, 123, 'string', Binary('0xDD'),WinGetHandle('')]
ConsoleWrite(_Array_Dump($test_6,'test') & @LF)
Выводит в консоль:
Код:
Func dump_test()
Local $test[5]
$test[0] = True ; Bool
$test[1] = 123 ; Int32
$test[2] = 'string' ; String(6)
$test[3] = Binary('0xDD') ; Binary(1)
$test[4] = HWnd('0x00140B0C') ; Ptr
Return $test
EndFunc
Global $test = dump_test()
Еще примеры:
Простой массив:
Выводит в консоль:
Двумерный массив:
Выводит в консоль:
Вложенные массивы:
Выводит в консоль:
Что то очень сложное:
Выводит в консоль:
Код:
#include '_Array_Dump.au3'
Local $array[3] = ['string',123,True]
ConsoleWrite(_Array_Dump($array,'test') & @LF)
Выводит в консоль:
Код:
Func dump_test()
Local $test[3]
$test[0] = 'string'
$test[1] = 123
$test[2] = True
Return $test
EndFunc
Global $test = dump_test()
Двумерный массив:
Код:
Local $array[3][2] = [['string',555],[123,'Первая строка' & @CRLF & 'Вторая строка'],[True]]
ConsoleWrite(_Array_Dump($array,'test') & @LF)
Выводит в консоль:
Код:
Func dump_test()
Local $test[3][2]
$test[0][0] = 'string'
$test[0][1] = 555
$test[1][0] = 123
$test[1][1] = 'Первая строка' & @CRLF & 'Вторая строка'
$test[2][0] = True
$test[2][1] = ''
Return $test
EndFunc
Global $test = dump_test()
Вложенные массивы:
Код:
Local $array_one[3] = ['string',123,True]
Local $array[3][2] = [[$array_one],[1,2],[3,4]]
ConsoleWrite(_Array_Dump($array,'test') & @LF)
Выводит в консоль:
Код:
Func dump_test()
Local $test_00[3]
$test_00[0] = 'string'
$test_00[1] = 123
$test_00[2] = True
Local $test[3][2]
$test[0][0] = $test_00
$test[0][1] = ''
$test[1][0] = 1
$test[1][1] = 2
$test[2][0] = 3
$test[2][1] = 4
Return $test
EndFunc
Global $test = dump_test()
Что то очень сложное:
Код:
Local $test_1[3] = [True, 123, 'string']
Local $test_2[3] = ['a' & @CRLF, "cat's", "c's " & @CR & "new''s"]
Local $test_3[3] = [@CRLF & 'a' & @CRLF, @CRLF & @CRLF & @CRLF, "c's " & @CR & "new''s"]
Local $test_4[3] = ['a', 'b', StringSplit(123, '', 2)]
Local $test_5[4] = ['a', 'b', StringSplit(123, '', 2), StringSplit(456, '', 2)]
Local $test_6[3] = [True, 123, 'string']
Local $test_7[4] = ['a', 'b', StringSplit(123, '', 2), StringSplit(456, '', 2)]
Local $test_8[4] = ['a', $test_6, StringSplit(345, '', 2), $test_7]
Local $test_2d[3][2] = [['a', 1],['b', 2],['c', 3]]
Local $test_3d[3][2][2] = [[['a', 10],['a', 11]],[['b', 20],['b', 21]],[['c', 30],['c', 31]]]
Local $test_combo[3][2][2] = [[[$test_1, $test_2],['a', $test_4]],[[$test_3, $test_8],['b', $test_2d]],[['c', $test_7],[$test_5, $test_3d]]]
ConsoleWrite(_Array_Dump($test_combo,'combo') & @LF)
Выводит в консоль:
Код:
Func dump_combo()
Local $combo_00[3]
$combo_00[0] = True
$combo_00[1] = 123
$combo_00[2] = 'string'
Local $combo_01[3]
$combo_01[0] = 'a' & @CRLF
$combo_01[1] = 'cat''s'
$combo_01[2] = 'c''s ' & @CR & 'new''''s'
Local $combo_02_03[3]
$combo_02_03[0] = '1'
$combo_02_03[1] = '2'
$combo_02_03[2] = '3'
Local $combo_02[3]
$combo_02[0] = 'a'
$combo_02[1] = 'b'
$combo_02[2] = $combo_02_03
Local $combo_04[3]
$combo_04[0] = @CRLF & 'a' & @CRLF
$combo_04[1] = @CRLF & @CRLF & @CRLF
$combo_04[2] = 'c''s ' & @CR & 'new''''s'
Local $combo_05_06[3]
$combo_05_06[0] = True
$combo_05_06[1] = 123
$combo_05_06[2] = 'string'
Local $combo_05_07[3]
$combo_05_07[0] = '3'
$combo_05_07[1] = '4'
$combo_05_07[2] = '5'
Local $combo_05_08_09[3]
$combo_05_08_09[0] = '1'
$combo_05_08_09[1] = '2'
$combo_05_08_09[2] = '3'
Local $combo_05_08_10[3]
$combo_05_08_10[0] = '4'
$combo_05_08_10[1] = '5'
$combo_05_08_10[2] = '6'
Local $combo_05_08[4]
$combo_05_08[0] = 'a'
$combo_05_08[1] = 'b'
$combo_05_08[2] = $combo_05_08_09
$combo_05_08[3] = $combo_05_08_10
Local $combo_05[4]
$combo_05[0] = 'a'
$combo_05[1] = $combo_05_06
$combo_05[2] = $combo_05_07
$combo_05[3] = $combo_05_08
Local $combo_11[3][2]
$combo_11[0][0] = 'a'
$combo_11[0][1] = 1
$combo_11[1][0] = 'b'
$combo_11[1][1] = 2
$combo_11[2][0] = 'c'
$combo_11[2][1] = 3
Local $combo_12_13[3]
$combo_12_13[0] = '1'
$combo_12_13[1] = '2'
$combo_12_13[2] = '3'
Local $combo_12_14[3]
$combo_12_14[0] = '4'
$combo_12_14[1] = '5'
$combo_12_14[2] = '6'
Local $combo_12[4]
$combo_12[0] = 'a'
$combo_12[1] = 'b'
$combo_12[2] = $combo_12_13
$combo_12[3] = $combo_12_14
Local $combo_15_16[3]
$combo_15_16[0] = '1'
$combo_15_16[1] = '2'
$combo_15_16[2] = '3'
Local $combo_15_17[3]
$combo_15_17[0] = '4'
$combo_15_17[1] = '5'
$combo_15_17[2] = '6'
Local $combo_15[4]
$combo_15[0] = 'a'
$combo_15[1] = 'b'
$combo_15[2] = $combo_15_16
$combo_15[3] = $combo_15_17
Local $combo_18[3][2][2]
$combo_18[0][0][0] = 'a'
$combo_18[0][0][1] = 10
$combo_18[0][1][0] = 'a'
$combo_18[0][1][1] = 11
$combo_18[1][0][0] = 'b'
$combo_18[1][0][1] = 20
$combo_18[1][1][0] = 'b'
$combo_18[1][1][1] = 21
$combo_18[2][0][0] = 'c'
$combo_18[2][0][1] = 30
$combo_18[2][1][0] = 'c'
$combo_18[2][1][1] = 31
Local $combo[3][2][2]
$combo[0][0][0] = $combo_00
$combo[0][0][1] = $combo_01
$combo[0][1][0] = 'a'
$combo[0][1][1] = $combo_02
$combo[1][0][0] = $combo_04
$combo[1][0][1] = $combo_05
$combo[1][1][0] = 'b'
$combo[1][1][1] = $combo_11
$combo[2][0][0] = 'c'
$combo[2][0][1] = $combo_12
$combo[2][1][0] = $combo_15
$combo[2][1][1] = $combo_18
Return $combo
EndFunc
Global $combo = dump_combo()
История версий:
Версия 1.0 AutoIt: 3.3.2.0+
Первая версия
Файл: Версия: 1.0
Версия 1.1 AutoIt: 3.3.10.0+
+ Добавлен вывод комментариев для каждого типа переменной
+ В комментариях к строкам, двоичным данным и массивам - добавлено в скобках размер
+ В комментариях к DLLStruct добавлен указатель(ptr) и размер(size)
+ В комментариях к Object добавлены свойства объекта из функции ObjName
+ Добавлена поддержка следующих типов: Binary, UserFunction, Function, Ptr, HWnd, ключевого слова NULL
Файл: Версия: 1.1
Первая версия
Файл: Версия: 1.0
Версия 1.1 AutoIt: 3.3.10.0+
+ Добавлен вывод комментариев для каждого типа переменной
+ В комментариях к строкам, двоичным данным и массивам - добавлено в скобках размер
+ В комментариях к DLLStruct добавлен указатель(ptr) и размер(size)
+ В комментариях к Object добавлены свойства объекта из функции ObjName
+ Добавлена поддержка следующих типов: Binary, UserFunction, Function, Ptr, HWnd, ключевого слова NULL
Файл: Версия: 1.1
Источник: autoit-script.ru
Автор(ы): inververs
Примечание: Спасибо C2H5OH за помощь в создании функции.
* Ограничено только возможностями AutoIT. На данный момент максимально можно создать 64-мерный массив.
* Ограничено максимальным уровнем рекурсии. 3900 лимит для x64 и 1900 лимит для x86
UPD: Новая версия: 1.1