Viktor1703
AutoIT Гуру
- Сообщения
- 1,535
- Репутация
- 413
Не знаю, окажется ли кому нибудь полезным такой вариант обращения с массивом, но мне он оказался полезным, смысл в том что можно создать один безразмерный массив (но в смысле в меру, до 999.999) и записывать в него данные в мною так называемые ячейки, а потом по ходу выполнения скрипта их просто считывать, для меня оказалось удобным такое решение.
Код:
Global $Array = _ArrayS_Create() ; Создаём первый массив
_ArrayS_WriteData($Array, 8, "Hello") ; Записываем данные
_ArrayS_WriteData($Array, 2, "Example") ; Записываем данные
MsgBox(0, "Index 8", _ArrayS_ReadData($Array, 8)) ; Считываем данные
_ArrayS_ReplaceData($Array, 8, "5743") ; Заменяем данные в ячейке 8 на "5743"
MsgBox(0, "Index 8", _ArrayS_ReadData($Array, 8)) ; Считываем данные
_ArrayS_RemoveData($Array, 8) ; Стираем данные из 8й ячейки
MsgBox(0, "Index 8", _ArrayS_ReadData($Array, 8)) ; Считываем данные
_ArrayS_CopyData($Array, 2, 8) ; Копируем данные из 2й ячейки в 8ю
MsgBox(0, "Index 8", _ArrayS_ReadData($Array, 8)) ; Считываем данные
_ArrayS_ReplaceData($Array, 8, "Hello") ; Заменяем данные в ячейке 8 на Hello
$index = _ArrayS_ExistsData($Array, "Hello") ; проверяем на существование данного слова в массиве
MsgBox(0, "Exists", "Exists Data = " & $index[0] & @CRLF & "Index Data = " & $index[1]) ; Считываем данные "Exists Data" если 1 то такое слово есть в массиве, "Index" индекс (ячейка) в котором находится это слово
MsgBox(0, "Size", "Array Size = " & _ArrayS_GetSize($Array) & " байт") ; Смотрим сколько байт весит наш массив
MsgBox(0, "List", _ArrayS_ListData($Array)) ; Выводим весь массив
Global $Array2 = _ArrayS_Create() ; Создаём 2й массив
_ArrayS_WriteData($Array2, 1, "2й массив") ; Записываем данные в масив в 1ю ячейку
MsgBox(0, "Index 8", _ArrayS_ReadData($Array, 8)) ; Читаем данные из первого массива
MsgBox(0, "Index 8", _ArrayS_ReadData($Array2, 1)); Читаем данные из второго массива
MsgBox(0, "Index 2", _ArrayS_ReadData($Array, 2)) ; Читаем данные из первого массива
Func _ArrayS_Create()
Local $Array[1] = [""]
Return $Array
EndFunc
Func _ArrayS_WriteData(ByRef $Array, $Index, $Value)
Local $Col
If IsArray($Array) Then
For $i = 0 To UBound($Array) - 1
$Col = $i
Next
If $Col < $Index Then
$Array[0] += $Index
ReDim $Array[$Array[0] + $Index]
$Array[$Array[0]] = $Value
ElseIf $Col >= $Index Then
If $Array[$Index] = "" Then
$Array[$Index] = $Value
EndIf
EndIf
EndIf
EndFunc
Func _ArrayS_ReplaceData(ByRef $Array, $Index, $Value)
If IsArray($Array) Then
For $i = 0 To UBound($Array) - 1
If $Index = $i Then
If $Value <> "" Then
$Array[$i] = $Value
Return 1
EndIf
EndIf
Next
Return 0
EndIf
EndFunc
Func _ArrayS_RemoveData(ByRef $Array, $Index)
If IsArray($Array) Then
For $i = 0 To UBound($Array) - 1
If $Index = $i Then
$Array[$i] = ""
Return 1
EndIf
Next
Return 0
EndIf
EndFunc
Func _ArrayS_CopyData(ByRef $Array, $Index, $Copy)
Local $ArrayData
If IsArray($Array) Then
For $i = 0 To UBound($Array) - 1
If $Index = $i Then
$ArrayData = $Array[$i]
EndIf
Next
For $i = 0 To UBound($Array) - 1
If $Copy = $i Then
$Array[$i] = $ArrayData
Return 1
EndIf
Next
Return 0
EndIf
EndFunc
Func _ArrayS_ReadData(ByRef $Array, $Index)
If IsArray($Array) Then
For $i = 0 To UBound($Array) - 1
If $Index = $i Then
Return $Array[$i]
EndIf
Next
Return 0
EndIf
EndFunc
Func _ArrayS_ListData(ByRef $Array)
Local $ArrayList
If IsArray($Array) Then
For $i = 1 To UBound($Array) - 1
If $Array[$i] <> "" Then
$ArrayList &= $Array[$i] & @CRLF
EndIf
Next
Return $ArrayList
EndIf
EndFunc
Func _ArrayS_ExistsData(ByRef $Array, $Value)
Local $Ret[2]
If IsArray($Array) Then
For $i = 1 To UBound($Array) - 1
If $Array[$i] = $Value Then
$Ret[0] = 1
$Ret[1] = $i
Return $Ret
EndIf
Next
$Ret[0] = 0
$Ret[1] = 0
Return $Ret
EndIf
EndFunc
Func _ArrayS_GetSize(ByRef $Array)
Local $ArraySize
If IsArray($Array) Then
For $i = 1 To UBound($Array) - 1
$ArraySize += (StringLen($Array[$i]) * 2)
Next
EndIf
Return $ArraySize
EndFunc
Func _ArrayS_Delete(ByRef $Array)
If IsArray($Array) Then
For $i = 0 To UBound($Array) - 1
$Array[$i] = ""
Next
EndIf
EndFunc