Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для Creat0R

Must AutoIt


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

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


amel27
Цитата:
кроме создания "фиктивного" лист-контрола ничего не приходит в голову, а это имхо из разряда извращений
Это тот самый лист котроль над которым я извращался тут? (пост номер 694).

Немного поизвращался в другом направлении, и сделал нужные для себя функции связанные с массивами, но подумал может кому то ещё пригодятся (комментов нет, но думаю запустив примеры всё довольно быстро станет ясно):

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

Dim $Arr1[4]
$Arr1[0] = UBound($Arr1) - 1
$Arr1[1] = "Hello"
$Arr1[2] = "My"
$Arr1[3] = "Friend!"

Dim $Arr2[4]
$Arr2[0] = UBound($Arr2) - 1
$Arr2[1] = "AutoIt"
$Arr2[2] = "Is"
$Arr2[3] = "The best!"

_ArrayDisplay($Arr1, "Display the first array")
_ArrayDisplay($Arr2, "Display the second array")

_ArrayJoin($Arr1, $Arr2, 1)

_ArrayDisplay($Arr1, "Demo of _ArrayJoin() function")

_ArrayClone($Arr1, 2)

_ArrayDisplay($Arr1, "Demo of _ArrayClone() function")

_ArrayDeleteClones($Arr1)

_ArrayDisplay($Arr1, "Demo of _ArrayDeleteClones() function")

_ArrayClear($Arr1)

_ArrayDisplay($Arr1, "Demo of _ArrayClean() function")

Func _ArrayJoin(ByRef $Array1, ByRef $Array2, $JoinedArray=1)
    If IsArray($Array1) And IsArray($Array2) Then
        If $JoinedArray = 1 Then
            For $iArr = 1 To UBound($Array2) - 1
                ReDim $Array1[UBound($Array1) + 1]
                $Array1[UBound($Array1) - 1] = $Array2[$iArr]
            Next
            $Array1[0] = UBound($Array1) - 1
        Else
            For $iArr = 1 To UBound($Array1) - 1
                ReDim $Array2[UBound($Array2) + 1]
                $Array2[UBound($Array2) - 1] = $Array1[$iArr]
            Next
            $Array2[0] = UBound($Array2) - 1
        EndIf
        SetError(0)
    Else
        SetError(1)
        Return -1
    EndIf
EndFunc

Func _ArrayClone(ByRef $Array, $Repeat=1)
    If IsArray($Array) Then
        Local $TempArr = $Array
        For $iR = 1 To $Repeat
            For $iArr = 1 To UBound($TempArr) - 1
                ReDim $Array[UBound($Array) + 1]
                $Array[UBound($Array) - 1] = $TempArr[$iArr]
            Next
            $Array[0] = UBound($Array) - 1
        Next
        SetError(0)
        Return 1
    Else
        SetError(1)
        Return -1
    EndIf
EndFunc

Func _ArrayDeleteClones(ByRef $Array)
    If IsArray($Array) Then
        Local $StringWithDelValue
        For $iD = 1 To UBound($Array) - 1
            $FindInArr = _ArraySearch($Array, $Array[$iD])
            If $FindInArr <> $iD Then $StringWithDelValue &= $Array[$iD] & "|"
        Next
        If $StringWithDelValue <> "" Then
            $TempArrOfIndexesString = StringSplit($StringWithDelValue, "|")
            If IsArray($TempArrOfIndexesString) Then
                For $iI = 1 To $TempArrOfIndexesString[0]
                    $CurrentIndexToDel = _ArraySearch($Array, $TempArrOfIndexesString[$iI])
                    If $CurrentIndexToDel = -1 Then ExitLoop
                    _ArrayDelete($Array, $CurrentIndexToDel)
                Next
            Else
                _ArrayDelete($Array, StringReplace($StringWithDelValue, "|", ""))
            EndIf
            $Array[0] = UBound($Array) - 1
            SetError(0)
            Return 1
        Else
            SetError(0)
            Return 0
        EndIf
    Else
        SetError(1)
        Return -1
    EndIf
EndFunc

Func _ArrayClear(ByRef $Array)
    If IsArray($Array) Then
        For $iArr = 1 To UBound($Array) - 1
            _ArrayDelete($Array, $iArr)
        Next
        $Array[0] = 0
        SetError(0)
        Return 1
    Else
        SetError(1)
        Return -1
    EndIf
EndFunc

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

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

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


Отправлено: 09:31, 18-02-2007 | #208