Jump to content

Search the Community

Showing results for tags 'memory Array'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • General
    • Announcements and Site News
    • Administration
  • AutoIt v3
    • AutoIt Help and Support
    • AutoIt Technical Discussion
    • AutoIt Example Scripts
  • Scripting and Development
    • Developer General Discussion
    • Language Specific Discussion
  • IT Administration
    • Operating System Deployment
    • Windows Client
    • Windows Server
    • Office

Categories

  • AutoIt Team
    • Beta
    • MVP
  • AutoIt
    • Automation
    • Databases and web connections
    • Data compression
    • Encryption and hash
    • Games
    • GUI Additions
    • Hardware
    • Information gathering
    • Internet protocol suite
    • Maths
    • Media
    • PDF
    • Security
    • Social Media and other Website API
    • Windows
  • Scripting and Development
  • IT Administration
    • Operating System Deployment
    • Windows Client
    • Windows Server
    • Office

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Member Title


Location


WWW


Interests

Found 1 result

  1. CArray Data Type ==> (String,Int,Binary,Float,HWnd,Ptr,Bool) Data types (COM object,Autoit Array,DllStruct) are not allowed All Files CArray.zip Simple logic error in the following two functions CArray1D($RowsCount) CArray2D($RowsCount,$ColusCount) Project after the amendment New_CArray.zip CArray.au3 #include <GuiListView.au3> #include <GUIConstantsEx.au3> Func CArray1D($RowsCount) Select Case $RowsCount < 0 Return SetError(1,0,0) Case Else $pRowsCount = $RowsCount if $pRowsCount = 0 Then $pRowsCount = 1 $CArray1D = DllStructCreate("INT RE;INT CE;PTR ELEMENTS[" & $pRowsCount & "]") DllStructSetData($CArray1D,"RE",$RowsCount) DllStructSetData($CArray1D,"CE",1) Return SetError(0,0,$CArray1D) EndSelect EndFunc Func UBound1D(ByRef $CArray1D) If Not IsDllStruct($CArray1D) Then Return SetError(1,0,0) $RowsCount = DllStructGetData($CArray1D,"RE") Return SetError(@error,0,$RowsCount) EndFunc Func ReDim1D(ByRef $CArray1D,$RowsCount) If Not IsDllStruct($CArray1D) Then Return SetError(1,0,False) If ($RowsCount < 0) Then Return SetError(2,0,False) Local $iRowsCount = UBound1D($CArray1D),$PtrSize = 4 ,$pRowsCount = $iRowsCount If ($RowsCount < $pRowsCount) Then $pRowsCount = $RowsCount Local $NewArray1D = CArray1D($RowsCount) DllCall("kernel32.dll","none","RtlMoveMemory","ptr",GetPtr1D($NewArray1D) _ ,"ptr",GetPtr1D($CArray1D),"ulong_ptr",($PtrSize * $pRowsCount)) If ($RowsCount < $iRowsCount) Then For $i = $RowsCount To $iRowsCount - 1 $hMemory = DllStructGetData($CArray1D,"ELEMENTS",$i + 1) If Not ($hMemory) Then ContinueLoop DllCall("kernel32.dll","handle","GlobalFree","ptr",$hMemory) Next EndIf $CArray1D = $NewArray1D Return SetError(0,0,True) EndFunc Func FreeCArray1D(ByRef $CArray1D) If Not IsDllStruct($CArray1D) Then Return SetError(1,0,False) Local $iRowsCount = UBound1D($CArray1D),$hMemory For $RowIndex = 0 To $iRowsCount - 1 $hMemory = DllStructGetData($CArray1D,"ELEMENTS",$RowIndex + 1) If Not ($hMemory) Then ContinueLoop DllCall("kernel32.dll","handle","GlobalFree","ptr",$hMemory) Next Return SetError(0,0,True) EndFunc Func DeleteCArray1D(ByRef $CArray1D) FreeCArray1D($CArray1D) if @error Then Return SetError(1,0,False) $CArray1D = "Nothing" Return SetError(0,0,True) EndFunc Func GetAt1D(ByRef $CArray1D,$RowIndex) If Not IsDllStruct($CArray1D) Then Return SetError(1,0,0) Local $iRowsCount = UBound1D($CArray1D),$Value,$hMemory If ($RowIndex < 0 Or $RowIndex > ($iRowsCount -1)) Then Return SetError(2,0,0) $hMemory = DllStructGetData($CArray1D,"ELEMENTS",$RowIndex + 1) return SetError(0,0,MemToValue($hMemory)) EndFunc Func SetAt1D(ByRef $CArray1D,$RowIndex,$vValue) If Not IsDllStruct($CArray1D) Or Not IsDataType($vValue) Then Return SetError(1,0,False) Local $iRowsCount = UBound1D($CArray1D),$Value,$hMemory If ($RowIndex < 0 Or $RowIndex > ($iRowsCount -1)) Then Return SetError(2,0,False) Local $hMemory = ValueToMem($vValue) If @error Then Return SetError(3,0,False) Local $ihMemory = DllStructGetData($CArray1D,"ELEMENTS",$RowIndex + 1) If ($ihMemory) Then DllCall("kernel32.dll","handle","GlobalFree","ptr",$ihMemory) DllStructSetData($CArray1D,"ELEMENTS",$hMemory,$RowIndex + 1) Return SetError(0,0,True) EndFunc Func SetAtGrow1D(ByRef $CArray1D,$RowIndex,$vValue) If Not IsDllStruct($CArray1D) Or Not IsDataType($vValue) Then Return SetError(1,0,False) Local $iRowsCount = UBound1D($CArray1D) If ($RowIndex < 0) Then Return SetError(2,0,False) If ($RowIndex > ($iRowsCount - 1)) Then ReDim1D($CArray1D,$RowIndex + 1) SetAt1D($CArray1D,$RowIndex,$vValue) If @error Then Return SetError(3,0,False) Return SetError(0,0,True) EndFunc Func Add1D(ByRef $CArray1D,$vValue,$End = True) If Not IsDllStruct($CArray1D) Or Not IsDataType($vValue) Then Return SetError(1,0,False) Local $iRowsCount = UBound1D($CArray1D),$PtrSize = 4 Local $NewArray1D = CArray1D($iRowsCount + 1) If ($End) Then DllCall("kernel32.dll","none","RtlMoveMemory","ptr",GetPtr1D($NewArray1D) _ ,"ptr",GetPtr1D($CArray1D),"ulong_ptr",($PtrSize * $iRowsCount)) SetAt1D($NewArray1D,$iRowsCount,$vValue) If @error Then Return SetError(2,0,0) Else DllCall("kernel32.dll","none","RtlMoveMemory","ptr",GetPtr1D($NewArray1D,1) _ ,"ptr",GetPtr1D($CArray1D),"ulong_ptr",($PtrSize * $iRowsCount)) SetAt1D($NewArray1D,0,$vValue) If @error Then Return SetError(2,0,0) EndIf $CArray1D = $NewArray1D Return SetError(0,0,True) EndFunc Func DeleteAt1D(ByRef $CArray1D,$RowIndex) If Not IsDllStruct($CArray1D) Then Return SetError(1,0,False) Local $iRowsCount = UBound1D($CArray1D),$Value,$hMemory,$iSize,$PtrSize = 4 If ($RowIndex < 0 Or $RowIndex > ($iRowsCount - 1)) Then Return SetError(2,0,False) $iSize = ($PtrSize * ($iRowsCount - ($RowIndex + 1))) Local $NewArray1D = CArray1D($iRowsCount - 1),$ihMemory DllCall("kernel32.dll","none","RtlMoveMemory","ptr",GetPtr1D($NewArray1D) _ ,"ptr",GetPtr1D($CArray1D),"ulong_ptr",($PtrSize * $RowIndex)) DllCall("kernel32.dll","none","RtlMoveMemory","ptr",GetPtr1D($NewArray1D,$RowIndex) _ ,"ptr",GetPtr1D($CArray1D,($RowIndex + 1)),"ulong_ptr",$iSize) Local $ihMemory = DllStructGetData($CArray1D,"ELEMENTS",$RowIndex + 1) If ($ihMemory) Then DllCall("kernel32.dll","handle","GlobalFree","ptr",$ihMemory) $CArray1D = $NewArray1D Return SetError(0,0,True) EndFunc Func InsertAt1D(ByRef $CArray1D,$RowIndex,$vValue) If Not IsDllStruct($CArray1D) Or Not IsDataType($vValue) Then Return SetError(1,0,False) Local $iRowsCount = UBound1D($CArray1D),$iSize,$PtrSize = 4 If ($RowIndex < 0 Or $RowIndex > ($iRowsCount - 1)) Then Return SetError(2,0,False) $iSize = ($PtrSize * ($iRowsCount - $RowIndex)) Local $NewArray1D = CArray1D($iRowsCount + 1) DllCall("kernel32.dll","none","RtlMoveMemory","ptr",GetPtr1D($NewArray1D) _ ,"ptr",GetPtr1D($CArray1D),"ulong_ptr",($PtrSize * $RowIndex)) DllCall("kernel32.dll","none","RtlMoveMemory","ptr",GetPtr1D($NewArray1D,$RowIndex + 1) _ ,"ptr",GetPtr1D($CArray1D,$RowIndex),"ulong_ptr",$iSize) SetAt1D($NewArray1D,$RowIndex,$vValue) If @error Then Return SetError(2,0,False) $CArray1D = $NewArray1D Return SetError(0,0,True) EndFunc Func Find1D(ByRef $CArray1D,$vValue,$begin = -1,$End = -1,$CaseSensitive = false) If Not IsDllStruct($CArray1D) Or Not IsDataType($vValue) Then Return SetError(1,0,-1) Local $iRowsCount = UBound1D($CArray1D) If ($End = - 1) Then $End = ($iRowsCount - 1) If ($begin = - 1) Then $begin = 0; If ($begin < 0 Or $begin > ($iRowsCount -1) Or $End < 0 _ Or $End > ($iRowsCount - 1) Or $End < $begin) Then Return SetError(2,0,-1) If IsString($vValue) Then For $i = $begin To $End If GetElType1D($CArray1D,$i) <> 1 Then ContinueLoop If (Not($CaseSensitive)) Then If (StringCompare(GetAt1D($CArray1D,$i),$vValue,0) = 0) Then Return SetError(0,0,$i) Else If (StringCompare(GetAt1D($CArray1D,$i),$vValue,1) = 0) Then Return SetError(0,0,$i) EndIf Next Else For $i = $begin To $End If GetElType1D($CArray1D,$i) = 1 Then ContinueLoop If GetAt1D($CArray1D,$i) = $vValue Then Return SetError(0,0,$i) Next EndIf Return SetError(3,0,-1) EndFunc Func GetPtr1D(ByRef $CArray1D,$MoveCount = 0) If Not IsDllStruct($CArray1D) Then Return SetError(1,0,0) Local $iRowsCount = UBound1D($CArray1D) If ($MoveCount < 0 Or $MoveCount > $iRowsCount) Then Return SetError(2,0,0) Local $Ptr1Dr , $PtrSize = 4 $Ptr1D = DllStructGetPtr($CArray1D,3) + ($MoveCount * $PtrSize) Return SetError(0,0,$Ptr1D) EndFunc Func GetElType1D(ByRef $CArray1D,$RowIndex) If Not IsDllStruct($CArray1D) Then Return SetError(1,0,-1) $hMemory = DllStructGetData($CArray1D,"ELEMENTS",$RowIndex + 1) $hLock = DllCall("kernel32.dll","ptr","GlobalLock","handle",$hMemory) If @error Or $hLock[0] = 0 Then Return SetError(2,0,-1) $hLock = $hLock[0] $Struct = DllStructCreate("INT DataSize;INT DataType",$hLock) DllCall("kernel32.dll","BOOL","GlobalUnlock","handle",$hMemory) $DataType = DllStructGetData($Struct,"DataType") If @error Then Return SetError(3,0,-1) Return SetError(0,0,$DataType) EndFunc Func CArray2D($RowsCount,$ColusCount) Select Case $RowsCount < 0 Or $ColusCount < 0 Return SetError(1,0,0) Case Else $pRowsCount = $RowsCount $pColusCount = $ColusCount if ($pRowsCount = 0) Then $pRowsCount = 1 if ($pColusCount = 0) Then $pColusCount = 1 $CArray2D = DllStructCreate("INT RE;INT CE;PTR ELEMENTS[" & $pRowsCount * $pColusCount & "]") DllStructSetData($CArray2D,"RE",$RowsCount) DllStructSetData($CArray2D,"CE",$ColusCount) Return SetError(0,0,$CArray2D) EndSelect EndFunc Func UBound2D(ByRef $CArray2D , $Dimension = 1) If Not IsDllStruct($CArray2D) Then Return SetError(1,0,0) $RowsCount = DllStructGetData($CArray2D,"RE") If ($Dimension = 1) Then Return SetError(@error,0,$RowsCount) $ColusCount = DllStructGetData($CArray2D,"CE") If ($Dimension = 2) Then Return SetError(@error,0,$ColusCount) Return SetError(2,0,0) EndFunc Func ReDim2D(ByRef $CArray2D,$RowsCount,$ColusCount) If Not IsDllStruct($CArray2D) Then Return SetError(1,0,False) If ($RowsCount < 0 Or $ColusCount < 0) Then Return SetError(2,0,False) Local $iRowsCount = UBound2D($CArray2D) , $iColusCount = UBound2D($CArray2D,2) Local $pRowsCount = $iRowsCount , $pColusCount = $iColusCount If ($RowsCount < $iRowsCount) Then $pRowsCount = $RowsCount If ($ColusCount < $iColusCount) Then $pColusCount = $ColusCount Local $NewCArray2D = CArray2D($RowsCount,$ColusCount) , $PtrSize = 4 For $i = 0 To $iRowsCount - 1 If ($i < $pRowsCount) Then DllCall("kernel32.dll","none","RtlMoveMemory","ptr",GetRowPtr($NewCArray2D,$i) _ ,"ptr",GetRowPtr($CArray2D,$i),"ulong_ptr",($PtrSize * $pColusCount)) For $j = $pColusCount To $iColusCount - 1 $hMemory = DllStructGetData($CArray2D,"ELEMENTS",GetElementNu($CArray2D,$i,$j)) If Not ($hMemory) Then ContinueLoop DllCall("kernel32.dll","handle","GlobalFree","ptr",$hMemory) Next Else For $j = 0 To $iColusCount - 1 $hMemory = DllStructGetData($CArray2D,"ELEMENTS",GetElementNu($CArray2D,$i,$j)) If Not ($hMemory) Then ContinueLoop DllCall("kernel32.dll","handle","GlobalFree","ptr",$hMemory) Next EndIf Next $CArray2D = $NewCArray2D Return SetError(0,0,True) EndFunc Func FreeCArray2D(ByRef $CArray2D) If Not IsDllStruct($CArray2D) Then Return SetError(1,0,False) Local $iRowsCount = UBound2D($CArray2D) , $iColusCount = UBound2D($CArray2D,2) For $RowIndex = 0 To $iRowsCount - 1 For $ColuIndex = 0 To $iColusCount - 1 $hMemory = DllStructGetData($CArray2D,"ELEMENTS",GetElementNu($CArray2D,$RowIndex,$ColuIndex)) If Not ($hMemory) Then ContinueLoop DllCall("kernel32.dll","handle","GlobalFree","ptr",$hMemory) Next Next Return SetError(0,0,True) EndFunc Func DeleteCArray2D(ByRef $CArray2D) FreeCArray1D($CArray2D) if @error Then Return SetError(1,0,False) $CArray2D = "Nothing" Return SetError(0,0,True) EndFunc Func GetAt2D(ByRef $CArray2D,$RowIndex,$ColuIndex) If Not IsDllStruct($CArray2D) Then Return SetError(1,0,0) $Element = GetElementNu($CArray2D,$RowIndex,$ColuIndex) If @error Then Return SetError(2,0,0) $hMemory = DllStructGetData($CArray2D,"ELEMENTS",$Element) return SetError(0,0,MemToValue($hMemory)) EndFunc Func SetAt2D(ByRef $CArray2D,$RowIndex,$ColuIndex,$vValue) If Not IsDllStruct($CArray2D) Or Not IsDataType($vValue) Then Return SetError(1,0,False) $Element = GetElementNu($CArray2D,$RowIndex,$ColuIndex) If @error Then Return SetError(2,0,False) Local $hMemory = ValueToMem($vValue) If @error Then Return SetError(3,0,False) Local $ihMemory = DllStructGetData($CArray2D,"ELEMENTS",$Element) If ($ihMemory) Then DllCall("kernel32.dll","handle","GlobalFree","ptr",$ihMemory) DllStructSetData($CArray2D,"ELEMENTS",$hMemory,$Element) Return SetError(0,0,True) EndFunc Func SetAtGrow2D(ByRef $CArray2D,$RowIndex,$ColuIndex,$vValue) If Not IsDllStruct($CArray2D) Or Not IsDataType($vValue) Then Return SetError(1,0,False) If ($RowIndex < 0 Or $ColuIndex < 0) Then Return SetError(2,0,False) Local $iRowsCount = UBound2D($CArray2D) , $iColusCount = UBound2D($CArray2D,2) Local $iRowIndex = $iRowsCount, $iColuIndex = $iColusCount If ($RowIndex > ($iRowsCount - 1)) Then $iRowIndex = ($RowIndex + 1) If ($ColuIndex > ($iColusCount - 1)) Then $iColuIndex = ($ColuIndex + 1) If ($RowIndex > ($iRowsCount - 1) Or $ColuIndex > ($iColusCount - 1)) Then ReDim2D($CArray2D,$iRowIndex,$iColuIndex) SetAt2D($CArray2D,$RowIndex,$ColuIndex,$vValue) If @error Then Return SetError(3,0,False) Return SetError(0,0,True) EndFunc Func Add2D(ByRef $CArray2D,$RowsCount = 1,$RowsEnd = True,$ColsCount = 0,$ColsEnd = True) If Not IsDllStruct($CArray2D) Then Return SetError(1,0,False) If ($RowsCount < 0 Or $ColsCount < 0) Then Return SetError(2,0,False) Local $iRowsCount = UBound2D($CArray2D) , $iColusCount = UBound2D($CArray2D,2) , $PtrSize = 4 Local $vIndex = 0 , $NewCArray2D = CArray2D($iRowsCount + $RowsCount,$iColusCount + $ColsCount) For $i = 0 To ($iRowsCount + $RowsCount) - 1 If ($RowsEnd == False And $i < $RowsCount) Then Else If ($ColsEnd = True) Then If ($vIndex < $iRowsCount) Then DllCall("kernel32.dll","none","RtlMoveMemory","ptr",GetRowPtr($NewCArray2D,$i) _ ,"ptr",GetRowPtr($CArray2D,$vIndex),"ulong_ptr",($PtrSize * $iColusCount)) EndIf Else If ($vIndex < $iRowsCount) Then DllCall("kernel32.dll","none","RtlMoveMemory","ptr",GetRowPtr($NewCArray2D,$i) + ($ColsCount _ * $PtrSize),"ptr",GetRowPtr($CArray2D,$vIndex),"ulong_ptr",($PtrSize * $iColusCount)) EndIf EndIf $vIndex += 1; EndIf Next $CArray2D = $NewCArray2D Return SetError(0,0,True) EndFunc Func Insert2D(ByRef $CArray2D,$RowIndex = 0,$RowsCount = 1,$ColuIndex = 0,$ColsCount = 0) If Not IsDllStruct($CArray2D) Then Return SetError(1,0,False) Local $iRowsCount = UBound2D($CArray2D),$iColusCount = UBound2D($CArray2D,2),$PtrSize = 4 Local $vIndex = 0,$NewCArray2D = CArray2D($iRowsCount + $RowsCount,$iColusCount + $ColsCount) If ($RowIndex < 0 Or $ColuIndex < 0 Or $RowIndex > ($iRowsCount -1) _ Or $ColuIndex > ($iColusCount - 1)) Then Return SetError(2,0,False) For $i = 0 To ($iRowsCount + $RowsCount) - 1 If ($i < $RowIndex Or $i > $RowIndex + ($RowsCount - 1)) Then DllCall("kernel32.dll","none","RtlMoveMemory","ptr",GetRowPtr($NewCArray2D,$i) _ ,"ptr",GetRowPtr($CArray2D,$vIndex),"ulong_ptr",($PtrSize * $ColuIndex)) DllCall("kernel32.dll","none","RtlMoveMemory","ptr",GetRowPtr($NewCArray2D,$i) _ + (($ColuIndex + $ColsCount) * $PtrSize),"ptr",GetRowPtr($CArray2D,$vIndex) + ($ColuIndex * _ $PtrSize),"ulong_ptr",($PtrSize * ($iColusCount - $ColuIndex))) $vIndex += 1 EndIf Next $CArray2D = $NewCArray2D Return SetError(0,0,True) EndFunc Func Delete2D(ByRef $CArray2D,$RowIndex = 0,$RowsCount = 1,$ColuIndex = 0,$ColsCount = 0) If Not IsDllStruct($CArray2D) Then Return SetError(1,0,False) Local $iRowsCount = UBound2D($CArray2D),$iColusCount = UBound2D($CArray2D,2),$PtrSize = 4 Local $vIndex = 0,$NewCArray2D = CArray2D($iRowsCount - $RowsCount,$iColusCount - $ColsCount) If ($RowIndex < 0 Or $ColuIndex < 0 Or $RowsCount > ($iRowsCount - $RowIndex) _ Or $ColsCount > ($iColusCount - $ColuIndex)) Then Return SetError(2,0,False) For $i = 0 To $iRowsCount - 1 If ($i < $RowIndex Or $i > ($RowIndex + ($RowsCount - 1))) Then DllCall("kernel32.dll","none","RtlMoveMemory","ptr",GetRowPtr($NewCArray2D,$vIndex) _ ,"ptr",GetRowPtr($CArray2D,$i),"ulong_ptr",($PtrSize * $ColuIndex)) DllCall("kernel32.dll","none","RtlMoveMemory","ptr",GetRowPtr($NewCArray2D,$vIndex) + _ ($ColuIndex * $PtrSize),"ptr",GetRowPtr($CArray2D,$i) + (($ColuIndex + $ColsCount) * $PtrSize) _ ,"ulong_ptr",$PtrSize * ($iColusCount - ($ColuIndex + $ColsCount))) For $j = $ColuIndex To $ColsCount - 1 $hMemory = DllStructGetData($CArray2D,"ELEMENTS",GetElementNu($CArray2D,$i,$j)) If Not ($hMemory) Then ContinueLoop DllCall("kernel32.dll","handle","GlobalFree","ptr",$hMemory) Next $vIndex += 1; Else For $j = 0 To $iColusCount - 1 $hMemory = DllStructGetData($CArray2D,"ELEMENTS",GetElementNu($CArray2D,$i,$j)) If Not ($hMemory) Then ContinueLoop DllCall("kernel32.dll","handle","GlobalFree","ptr",$hMemory) Next EndIf Next $CArray2D = $NewCArray2D Return SetError(0,0,True) EndFunc Func Find2D(ByRef $CArray2D,$vValue,$RowIndex = -1,$ColuIndex = -1,$CaseSensitive = false) If Not IsDllStruct($CArray2D) Or Not IsDataType($vValue) Then Return SetError(1,0,-1) Local $iRowsCount = UBound2D($CArray2D),$iColusCount = UBound2D($CArray2D,2),$RtIndex[2] If ($RowIndex = -1) Then $RowIndex = ($iRowsCount - 1) If ($ColuIndex = -1) Then $ColuIndex = ($iColusCount - 1) If ($RowIndex < 0 Or $RowIndex > ($iRowsCount - 1) _ Or $ColuIndex < 0 Or $ColuIndex > (($iColusCount -1))) Then Return SetError(2,0,-1) If (IsString($vValue)) Then For $i = 0 To $RowIndex For $j = 0 To $ColuIndex If GetElType2D($CArray2D,$i,$j) <> 1 Then ContinueLoop $RtIndex[0] = $i $RtIndex[1] = $j If (Not($CaseSensitive)) Then If (StringCompare(GetAt2D($CArray2D,$i,$j),$vValue,0) = 0) _ Then Return SetError(0,0,$RtIndex) Else If (StringCompare(GetAt2D($CArray2D,$i,$j),$vValue,1) = 0) _ Then Return SetError(0,0,$RtIndex) EndIf Next Next Else For $i = 0 To $RowIndex For $j = 0 To $ColuIndex If GetElType2D($CArray2D,$i,$j) = 1 Then ContinueLoop $RtIndex[0] = $i $RtIndex[1] = $j If (GetAt2D($CArray2D,$i,$j) = $vValue) Then Return SetError(0,0,$RtIndex) Next Next EndIf Return SetError(3,0,-1) EndFunc Func GetRowPtr(ByRef $CArray2D,$RowIndex) If Not IsDllStruct($CArray2D) Then Return SetError(1,0,0) Local $RowsCount = UBound2D($CArray2D) , $ColusCount = UBound2D($CArray2D,2) If ($RowIndex < 0 Or $RowIndex > ($RowsCount - 1)) Then Return SetError(2,0,0) Local $RowPtr , $PtrSize = 4 $RowPtr = (DllStructGetPtr($CArray2D,3) + (($RowIndex * $ColusCount) * $PtrSize)) Return SetError(0,0,$RowPtr) EndFunc Func GetElementNu(ByRef $CArray2D,$RowIndex,$ColuIndex) If Not IsDllStruct($CArray2D) Then Return SetError(1,0,-1) Local $iRowsCount = UBound2D($CArray2D) , $iColusCount = UBound2D($CArray2D,2) If ($RowIndex < 0 Or $RowIndex > ($iRowsCount -1) Or $ColuIndex < 0 _ Or $ColuIndex > ($iColusCount -1)) Then Return SetError(2,0,-1) Local $Element = (($RowIndex + 1) * $iColusCount) - ($iColusCount - ($ColuIndex + 1)) Return SetError(0,0,$Element) EndFunc Func GetElType2D(ByRef $CArray2D,$RowIndex,$ColuIndex) If Not IsDllStruct($CArray2D) Then Return SetError(1,0,-1) $Number = GetElementNu($CArray2D,$RowIndex,$ColuIndex) If @error Then Return SetError(2,0,-1) $hMemory = DllStructGetData($CArray2D,"ELEMENTS",$Number) $hLock = DllCall("kernel32.dll","ptr","GlobalLock","handle",$hMemory) If @error Or $hLock[0] = 0 Then Return SetError(3,0,-1) $hLock = $hLock[0] $Struct = DllStructCreate("INT DataSize;INT DataType",$hLock) DllCall("kernel32.dll","BOOL","GlobalUnlock","handle",$hMemory) $DataType = DllStructGetData($Struct,"DataType") If @error Then Return SetError(4,0,-1) Return SetError(0,0,$DataType) EndFunc Func IsDataType($Value) If IsString($Value) Or IsBinary($Value) Or IsInt($Value) _ Or IsFloat($Value) Or IsBool($Value) Or IsPtr($Value) Or _ IsHWnd($Value) Or IsKeyword($Value) Then Return True Return False EndFunc Func ValueToMem($Value) Local $IntSize = 4 , $BoolSize = 4 Local $PtrSize = 4 , $HWndSize = 4 If Not IsDataType($Value) Then Return SetError(1,0,0) Select Case IsString($Value) $DataSize = StringLen($Value) + 1 $hMemory = DllCall("kernel32.dll","handle","GlobalAlloc","uint",(0x0002 + 0x0040),"ulong_ptr",($DataSize * 2) + ($IntSize * 2)) ;(0x0002 + 0x0040) ==> $GHND / ($IntSize * 2) 2 ==> "int DataSize;int DataType; If @error Or $hMemory[0] = 0 Then Return SetError(2,0,0) $hLock = DllCall("kernel32.dll","ptr","GlobalLock","handle",$hMemory[0]) $Struct = DllStructCreate("INT DataSize;INT DataType;WCHAR Data[" & $DataSize & "]",$hLock[0]) DllStructSetData($Struct,"DataSize",$DataSize) DllStructSetData($Struct,"DataType",1) DllStructSetData($Struct,"Data",$Value) DllCall("kernel32.dll","BOOL","GlobalUnlock","handle",$hMemory[0]) Return SetError(0,0,$hMemory[0]) Case IsBinary($Value) $DataSize = BinaryLen($Value) $hMemory = DllCall("kernel32.dll","handle","GlobalAlloc","uint",(0x0002 + 0x0040),"ulong_ptr",$DataSize + ($IntSize * 2)) ;(0x0002 + 0x0040) ==> $GHND / ($IntSize * 2) 2 ==> "int DataSize;int DataType; If @error Or $hMemory[0] = 0 Then Return SetError(2,0,0) $hLock = DllCall("kernel32.dll","ptr","GlobalLock","handle",$hMemory[0]) $Struct = DllStructCreate("INT DataSize;INT DataType;BYTE Data[" & $DataSize & "]",$hLock[0]) DllStructSetData($Struct,"DataSize",$DataSize) DllStructSetData($Struct,"DataType",2) DllStructSetData($Struct,"Data",$Value) DllCall("kernel32.dll","BOOL","GlobalUnlock","handle",$hMemory[0]) Return SetError(0,0,$hMemory[0]) Case IsInt($Value) $Value = String($Value) $DataSize = StringLen($Value) + 1 $hMemory = DllCall("kernel32.dll","handle","GlobalAlloc","uint",(0x0002 + 0x0040),"ulong_ptr",($DataSize * 2) + ($IntSize * 2)) ;(0x0002 + 0x0040) ==> $GHND / ($IntSize * 2) 2 ==> "int DataSize;int DataType; If @error Or $hMemory[0] = 0 Then Return SetError(2,0,0) $hLock = DllCall("kernel32.dll","ptr","GlobalLock","handle",$hMemory[0]) $Struct = DllStructCreate("INT DataSize;INT DataType;WCHAR Data[" & $DataSize & "]",$hLock[0]) DllStructSetData($Struct,"DataSize",$DataSize) DllStructSetData($Struct,"DataType",3) DllStructSetData($Struct,"Data",$Value) DllCall("kernel32.dll","BOOL","GlobalUnlock","handle",$hMemory[0]) Return SetError(0,0,$hMemory[0]) Case IsFloat($Value) $Value = String($Value) $DataSize = StringLen($Value) + 1 $hMemory = DllCall("kernel32.dll","handle","GlobalAlloc","uint",(0x0002 + 0x0040),"ulong_ptr",($DataSize * 2) + ($IntSize * 2)) ;(0x0002 + 0x0040) ==> $GHND / ($IntSize * 2) 2 ==> "int DataSize;int DataType; If @error Or $hMemory[0] = 0 Then Return SetError(2,0,0) $hLock = DllCall("kernel32.dll","ptr","GlobalLock","handle",$hMemory[0]) $Struct = DllStructCreate("INT DataSize;INT DataType;WCHAR Data[" & $DataSize & "]",$hLock[0]) DllStructSetData($Struct,"DataSize",$DataSize) DllStructSetData($Struct,"DataType",4) DllStructSetData($Struct,"Data",$Value) DllCall("kernel32.dll","BOOL","GlobalUnlock","handle",$hMemory[0]) Return SetError(0,0,$hMemory[0]) Case IsBool($Value) $hMemory = DllCall("kernel32.dll","handle","GlobalAlloc","uint",(0x0002 + 0x0040),"ulong_ptr",$BoolSize + ($IntSize * 2)) ;(0x0002 + 0x0040) ==> $GHND / $BoolSize + ($IntSize * 2) ==> INT DataSize;INT DataType;BOOL Data If @error Or $hMemory[0] = 0 Then Return SetError(2,0,0) $hLock = DllCall("kernel32.dll","ptr","GlobalLock","handle",$hMemory[0]) $Struct = DllStructCreate("INT DataSize;INT DataType;BOOL Data",$hLock[0]) DllStructSetData($Struct,"DataType",5) DllStructSetData($Struct,"Data",$Value) DllCall("kernel32.dll","BOOL","GlobalUnlock","handle",$hMemory[0]) Return SetError(0,0,$hMemory[0]) Case IsPtr($Value) $hMemory = DllCall("kernel32.dll","handle","GlobalAlloc","uint",(0x0002 + 0x0040),"ulong_ptr",$PtrSize + ($IntSize * 2)) ;(0x0002 + 0x0040) ==> $GHND / $PtrSize + ($IntSize * 2) ==> "INT DataSize;INT DataType;PTR Data" If @error Or $hMemory[0] = 0 Then Return SetError(2,0,0) $hLock = DllCall("kernel32.dll","ptr","GlobalLock","handle",$hMemory[0]) $Struct = DllStructCreate("INT DataSize;INT DataType;PTR Data",$hLock[0]) DllStructSetData($Struct,"DataType",6) DllStructSetData($Struct,"Data",$Value) DllCall("kernel32.dll","BOOL","GlobalUnlock","handle",$hMemory[0]) Return SetError(0,0,$hMemory[0]) Case IsHWnd($Value) $hMemory = DllCall("kernel32.dll","handle","GlobalAlloc","uint",(0x0002 + 0x0040),"ulong_ptr",$HWndSize + ($IntSize * 2)) ;(0x0002 + 0x0040) ==> $GHND / $HWndSize + ($IntSize * 2) ==> "INT DataSize;INT DataType;HWND Data" If @error Or $hMemory[0] = 0 Then Return SetError(2,0,0) $hLock = DllCall("kernel32.dll","ptr","GlobalLock","handle",$hMemory[0]) $Struct = DllStructCreate("INT DataSize;INT DataType;HWND Data",$hLock[0]) DllStructSetData($Struct,"DataType",7) DllStructSetData($Struct,"Data",$Value) DllCall("kernel32.dll","BOOL","GlobalUnlock","handle",$hMemory[0]) Return SetError(0,0,$hMemory[0]) Case IsKeyword($Value) ;Default Keyword $hMemory = DllCall("kernel32.dll","handle","GlobalAlloc","uint",(0x0002 + 0x0040),"ulong_ptr",($IntSize * 3)) ;(0x0002 + 0x0040) ==> $GHND / ($IntSize * 3) 3 ==> "INT DataSize;INT DataType;INT Data" If @error Or $hMemory[0] = 0 Then Return SetError(2,0,0) $hLock = DllCall("kernel32.dll","ptr","GlobalLock","handle",$hMemory[0]) $Struct = DllStructCreate("INT DataSize;INT DataType;INT Data",$hLock[0]) DllStructSetData($Struct,"DataType",8) DllStructSetData($Struct,"Data",$Value) DllCall("kernel32.dll","BOOL","GlobalUnlock","handle",$hMemory[0]) Return SetError(0,0,$hMemory[0]) EndSelect EndFunc Func MemToValue($hMemory) $hLock = DllCall("kernel32.dll","ptr","GlobalLock","handle",$hMemory) If @error Or $hLock[0] = 0 Then Return SetError(1,0,"") $hLock = $hLock[0] $Struct = DllStructCreate("INT DataSize;INT DataType",$hLock) $DataType = DllStructGetData($Struct,"DataType") If @error Then DllCall("kernel32.dll","BOOL","GlobalUnlock","handle",$hMemory) Return SetError(2,0,"") EndIf Switch $DataType Case 1 $DataSize = DllStructGetData($Struct,"DataSize") $Struct = DllStructCreate("INT DataSize;INT DataType;WCHAR Data[" & $DataSize & "]",$hLock) DllCall("kernel32.dll","BOOL","GlobalUnlock","handle",$hMemory) $Data = DllStructGetData($Struct,"Data") If @error Then Return SetError(3,0,"") Return SetError(0,0,$Data) Case 2 $DataSize = DllStructGetData($Struct,"DataSize") $Struct = DllStructCreate("INT DataSize;INT DataType;BYTE Data[" & $DataSize & "]",$hLock) DllCall("kernel32.dll","BOOL","GlobalUnlock","handle",$hMemory) $Data = DllStructGetData($Struct,"Data") If @error Then Return SetError(3,0,"") Return SetError(0,0,$Data) Case 3 $DataSize = DllStructGetData($Struct,"DataSize") $Struct = DllStructCreate("INT DataSize;INT DataType;WCHAR Data[" & $DataSize & "]",$hLock) DllCall("kernel32.dll","BOOL","GlobalUnlock","handle",$hMemory) $Data = DllStructGetData($Struct,"Data") If @error Then Return SetError(3,0,"") Return SetError(0,0,Number($Data)) Case 4 $DataSize = DllStructGetData($Struct,"DataSize") $Struct = DllStructCreate("INT DataSize;INT DataType;WCHAR Data[" & $DataSize & "]",$hLock) DllCall("kernel32.dll","BOOL","GlobalUnlock","handle",$hMemory) $Data = DllStructGetData($Struct,"Data") If @error Then Return SetError(3,0,"") Return SetError(0,0,Number($Data)) Case 5 $Struct = DllStructCreate("INT DataSize;INT DataType;BOOL Data",$hLock) DllCall("kernel32.dll","BOOL","GlobalUnlock","handle",$hMemory) $Data = DllStructGetData($Struct,"Data") If @error Then Return SetError(3,0,"") Return SetError(0,0,$Data == 1) Case 6 $Struct = DllStructCreate("INT DataSize;INT DataType;PTR Data",$hLock) DllCall("kernel32.dll","BOOL","GlobalUnlock","handle",$hMemory) $Data = DllStructGetData($Struct,"Data") If @error Then Return SetError(3,0,"") Return SetError(0,0,$Data) Case 7 $Struct = DllStructCreate("INT DataSize;INT DataType;HWND Data",$hLock) DllCall("kernel32.dll","BOOL","GlobalUnlock","handle",$hMemory) $Data = DllStructGetData($Struct,"Data") If @error Then Return SetError(3,0,"") Return SetError(0,0,$Data) Case 8 DllCall("kernel32.dll","BOOL","GlobalUnlock","handle",$hMemory) $Data = DllStructGetData($Struct,"Data") If @error Then Return SetError(3,0,"") Return SetError(0,0,Default) Case Else DllCall("kernel32.dll","BOOL","GlobalUnlock","handle",$hMemory) Return SetError(4,0,"") EndSwitch EndFunc Func Display(ByRef $CArrayStruct,$Title = "DisplayCArray") $TrayWnd = WinGetHandle("[CLASS:Shell_TrayWnd]") ;Taskbar Window $WPos = WinGetPos($TrayWnd) If Not IsArray($WPos) Then $iH = @DesktopHeight - 68 Else $iH = $WPos[1] - 30 EndIf $RE = DllStructGetData($CArrayStruct,"RE") $CE = DllStructGetData($CArrayStruct,"CE") If $RE < 1 Or $CE < 1 Then Return SetError(1,0,False) $W = (($CE + 1) * 70) + 15 ; $CE + 1 ==> 1 Rows Number $H = (($RE + 1) * 20) + 50 ; $RE + 1 ==> 1 Clos Number If $W > (@DesktopWidth - 5) Then $W = @DesktopWidth - 5 If $H > $iH Then $H = $iH GUICreate($Title,$W,$H,0,0) $W -= 10 $H -= 40 $hListView = GUICtrlCreateListView("",5,5,$W,$H) _GUICtrlListView_SetExtendedListViewStyle($hListView, _ BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES,$LVS_EX_FLATSB)) $CopyButton = GUICtrlCreateButton("Copy Selected", 5,$H + 10, $W - 5, 25) For $i = 0 To $RE - 1 For $j = 0 To $CE - 1 $Value = GetAt2D($CArrayStruct,$i,$j) If $i = 0 Then If $J = 0 Then _ _GUICtrlListView_AddColumn($hListView, "Row",70) _GUICtrlListView_AddColumn($hListView, "Col " & $J,70) EndIf If $j = 0 Then _GUICtrlListView_AddItem($hListView,"",$i) _GUICtrlListView_AddSubItem($hListView,$i, "[" & $i & "]",$j) _GUICtrlListView_AddSubItem($hListView,$i,$Value,$j + 1) Else _GUICtrlListView_AddSubItem($hListView,$i,$Value,$j + 1) EndIf Next Next GUISetState() Do $msg = GUIGetMsg() If $msg = $CopyButton Then $selectionmark = _GUICtrlListView_GetSelectionMark($hListView) ClipPut(_GUICtrlListView_GetItemTextString($hListView,$selectionmark)) EndIf Until $msg = $GUI_EVENT_CLOSE GUIDelete() Return SetError(0,0,True) EndFunc Examples Of CArray1D Add_1D.au3 #include "CArray.au3" $vArray1D = CArray1D(5) SetAt1D($vArray1D,0,"0") SetAt1D($vArray1D,1,"1") SetAt1D($vArray1D,2,"2") SetAt1D($vArray1D,3,"3") SetAt1D($vArray1D,4,"4") Display($vArray1D) $Rt = Add1D($vArray1D,"beginning",False) ;Add1D(ByRef $CArray1D,$vValue,$End = True) ;Add Value ==> beginning In The beginning // End ==> False $Rt = Add1D($vArray1D,"End") ;Add1D(ByRef $CArray1D,$vValue,$End = True) ;Add Value ==> End In The End // Default End ==> True Display($vArray1D,"Add") DeleteCArray1D($vArray1D) DeleteAt_1D.au3 #include "CArray.au3" $vArray1D = CArray1D(6) SetAt1D($vArray1D,0,"0") SetAt1D($vArray1D,1,"1") SetAt1D($vArray1D,2,"2") SetAt1D($vArray1D,3,"3") SetAt1D($vArray1D,4,"4") SetAt1D($vArray1D,5,"5") Display($vArray1D) $Rt = DeleteAt1D($vArray1D,4) ;DeleteAt1D(ByRef $CArray1D,$RowIndex) ;Delete The RowIndex 4 //RowIndex ==> 4 Display($vArray1D,"Delete The RowIndex 4") DeleteCArray1D($vArray1D) DeleteCArray1D.au3 #include "CArray.au3" $vArray1D = CArray1D(6) SetAt1D($vArray1D,0,"0") SetAt1D($vArray1D,1,"1") SetAt1D($vArray1D,2,"2") SetAt1D($vArray1D,3,"3") SetAt1D($vArray1D,4,"4") SetAt1D($vArray1D,5,"5") Display($vArray1D) DeleteCArray1D($vArray1D) MsgBox(0,"MSG",$vArray1D) Find_1D.au3 #include "CArray.au3" $vArray1D = CArray1D(6) SetAt1D($vArray1D,0,"CHAR") SetAt1D($vArray1D,1,"WORD") SetAt1D($vArray1D,2,"INT ") SetAt1D($vArray1D,3,"BOOL") SetAt1D($vArray1D,4,"LONG") SetAt1D($vArray1D,5,"1234") Display($vArray1D) $Result = Find1D($vArray1D,"bool") ;Find1D(ByRef $CArray1D,$vValue,$begin = -1,$End = -1,$CaseSensitive = false) ;vValue ==> bool ;begin ==> -1 Default From 0 ;End ==> -1 Default To Last RowIndex ;BOOL CaseSensitive ==> Default false if ($Result <> -1) Then MsgBox(0,"Results","Found The bool value in RowIndex " & $Result) Else MsgBox(0,"Error","Is not found, the bool value") EndIf Display($vArray1D) $Result = Find1D($vArray1D,"bOOL",-1,-1,true) ;Find1D(ByRef $CArray1D,$vValue,$begin = -1,$End = -1,$CaseSensitive = false) ;vValue ==> bOOL ;begin ==> -1 Default From 0 ;End ==> -1 Default To Last RowIndex ;BOOL CaseSensitive ==> true if ($Result <> -1) Then MsgBox(0,"Results","Found The bOOL value in RowIndex " & $Result) Else MsgBox(0,"Error","Is not found, the bOOL value") EndIf Display($vArray1D) $Result = Find1D($vArray1D,"LONG",0,4,true) ;Find1D(ByRef $CArray1D,$vValue,$begin = -1,$End = -1,$CaseSensitive = false) ;vValue ==> LONG ;begin ==> from RowIndex 0 ;End ==> To RowIndex 4 ;BOOL CaseSensitive ==> true if ($Result <> -1) Then MsgBox(0,"Results","Found The LONG value in RowIndex " & $Result) Else MsgBox(0,"Error","Is not found, the LONG value") EndIf Display($vArray1D) $Result = Find1D($vArray1D,"LONG",0,2,true) ;Find1D(ByRef $CArray1D,$vValue,$begin = -1,$End = -1,$CaseSensitive = false) ;vValue ==> LONG ;begin ==> from RowIndex 0 ;End ==> To RowIndex 2 ;BOOL CaseSensitive ==> true if ($Result <> -1) Then MsgBox(0,"Results","Found The LONG value in RowIndex " & $Result,0) Else MsgBox(0,"Error","Is not found, the LONG value") EndIf DeleteCArray1D($vArray1D) FreeCArray1D.au3 #include "CArray.au3" $vArray1D = CArray1D(6) SetAt1D($vArray1D,0,"0") SetAt1D($vArray1D,1,"1") SetAt1D($vArray1D,2,"2") SetAt1D($vArray1D,3,"3") SetAt1D($vArray1D,4,"4") SetAt1D($vArray1D,5,"5") Display($vArray1D) FreeCArray1D($vArray1D) Display($vArray1D) InsertAt_1D.au3 #include "CArray.au3" $vArray1D = CArray1D(5) SetAt1D($vArray1D,0,"0") SetAt1D($vArray1D,1,"1") SetAt1D($vArray1D,2,"2") SetAt1D($vArray1D,3,"3") SetAt1D($vArray1D,4,"4") Display($vArray1D) $Rt = InsertAt1D($vArray1D,2,"NewValue1") ;InsertAt1D(ByRef $CArray1D,$RowIndex,$vValue) ;Insert Value ==> NewValue2 At The RowIndex 2 Display($vArray1D) $Rt = InsertAt1D($vArray1D,4,"NewValue2") ;InsertAt1D(ByRef $CArray1D,$RowIndex,$vValue) ;Insert Value ==> NewValue2 At The RowIndex 4 Display($vArray1D) DeleteCArray1D($vArray1D) SetGet1D.au3 #include "CArray.au3" $iArray1D = CArray1D(3) ; 3 ==> Rows Count For $i = 0 To 3 ; 0 To 3 ==> Over the Count of Rows $Rt = SetAt1D($iArray1D,$i,$i) if (@error Or $Rt = False) Then ; Test Errors MsgBox(0,"BOOL","false" & @CRLF & "$i ==> " & $i) Else MsgBox(0,"BOOL","true" & @CRLF & "$i ==> " & $i) EndIf ; i ==> Row Index And vValue Next Display($iArray1D) DeleteCArray1D($iArray1D) $vArray1D = CArray1D(3) SetAt1D($vArray1D,0,"0") SetAt1D($vArray1D,1,"1") SetAt1D($vArray1D,2,"2") For $i = 0 To 3 ; 0 To 3 ==> Over the Count of Rows $vValue = GetAt1D($vArray1D,$i) ;GetAt1D(ByRef $CArray1D,$RowIndex) GetAt i ==> Row Index ;Return ==> vValue if (@error <> 0) Then ; Test Errors MsgBox(0,"Error","@error ==> " & @error) Else MsgBox(0,"No Error","$vValue ==> " & $vValue) EndIf Next Display($iArray1D) DeleteCArray1D($vArray1D) $nArray1D = CArray1D(1) ; 1 ==> Rows Count For $i = 0 To 10 ;SetAtGrow1D(ByRef $CArray1D,$RowIndex,$vValue) $Rt = SetAtGrow1D($nArray1D,$i,$i) ; i ==> Row Index And vValue Next Display($nArray1D) DeleteCArray1D($nArray1D) UBoundReDim_1D.au3 #include "CArray.au3" $iArray1D = CArray1D(0) ; 0 ==> Rows Count ReDim1D($iArray1D,4);4 ==> Rows Count ; ReDim1D(ByRef $CArray1D,$RowsCount) Display($iArray1D) $RowsCount = UBound1D($iArray1D);Get Rows Count ;UBound1D(ByRef $CArray1D) MsgBox(0,"UBound","RowsCount = " & $RowsCount,0); DeleteCArray1D($iArray1D) $jArray1D = CArray1D(5) ;5 ==> Rows Count ReDim1D($jArray1D,3); 3 ==> Rows Count Display($jArray1D) $RowsCount = UBound1D($jArray1D);Get Rows Count MsgBox(0,"UBound","RowsCount = " & $RowsCount,0); DeleteCArray1D($jArray1D) $vArray1D = CArray1D(4) ; 4 ==> Rows Count SetAt1D($vArray1D,0,"0") SetAt1D($vArray1D,1,"1") SetAt1D($vArray1D,2,"2") SetAt1D($vArray1D,3,"3") ReDim1D($vArray1D,1); // 1 ==> Rows Count Display($vArray1D) $RowsCount = UBound1D($vArray1D);Get Rows Count MsgBox(0,"UBound","RowsCount = " & $RowsCount,0); DeleteCArray1D($vArray1D) Examples Of CArray2D Add_2D.au3 #include "CArray.au3" $vArray2D = CArray2D(4,4) SetAt2D($vArray2D,0,0,"0|0") SetAt2D($vArray2D,0,1,"0|1") SetAt2D($vArray2D,0,2,"0|2") SetAt2D($vArray2D,0,3,"0|3") SetAt2D($vArray2D,1,0,"1|0") SetAt2D($vArray2D,1,1,"1|1") SetAt2D($vArray2D,1,2,"1|2") SetAt2D($vArray2D,1,3,"1|3") SetAt2D($vArray2D,2,0,"2|0") SetAt2D($vArray2D,2,1,"2|1") SetAt2D($vArray2D,2,2,"2|2") SetAt2D($vArray2D,2,3,"2|3") SetAt2D($vArray2D,3,0,"3|0") SetAt2D($vArray2D,3,1,"3|1") SetAt2D($vArray2D,3,2,"3|2") SetAt2D($vArray2D,3,3,"3|3") Display($vArray2D) $Rt = Add2D($vArray2D,2) ;Add2D(ByRef $CArray2D,$RowsCount = 1,$RowsEnd = True,$ColsCount = 0,$ColsEnd = True) ; Add 2 Rows In The End ; RowsCount = 2 ; RowsEnd ==> Default: true ; ;ColsCount = 0,ColsEnd = true Display($vArray2D) $Rt = Add2D($vArray2D,0,0,2) ;Add2D(ByRef $CArray2D,$RowsCount = 1,$RowsEnd = True,$ColsCount = 0,$ColsEnd = True) ; Add 2 Columns In The End ; ColsCount = 2 ; ColsEnd ==> Default: true ; ;RowsCount = 0,RowsEnd = 0 Display($vArray2D) $Rt = Add2D($vArray2D,2,false,2,false) ;Add2D(ByRef $CArray2D,$RowsCount = 1,$RowsEnd = True,$ColsCount = 0,$ColsEnd = True) ; Add 2 Rows And 2 Columns In The beginning ;RowsCount = 2 ; RowsEnd ==> false ;ColsCount = 2 ; ColsEnd ==> false Display($vArray2D) DeleteCArray2D($vArray2D) Delete_2D.au3 #include "CArray.au3" $vArray2D = CArray2D(6,6) SetAt2D($vArray2D,0,0,"0|0") SetAt2D($vArray2D,0,1,"0|1") SetAt2D($vArray2D,0,2,"0|2") SetAt2D($vArray2D,0,3,"0|3") SetAt2D($vArray2D,0,4,"0|4") SetAt2D($vArray2D,0,5,"0|5") SetAt2D($vArray2D,1,0,"1|0") SetAt2D($vArray2D,1,1,"1|1") SetAt2D($vArray2D,1,2,"1|2") SetAt2D($vArray2D,1,3,"1|3") SetAt2D($vArray2D,1,4,"1|4") SetAt2D($vArray2D,1,5,"1|5") SetAt2D($vArray2D,2,0,"2|0") SetAt2D($vArray2D,2,1,"2|1") SetAt2D($vArray2D,2,2,"2|2") SetAt2D($vArray2D,2,3,"2|3") SetAt2D($vArray2D,2,4,"2|4") SetAt2D($vArray2D,2,5,"2|5") SetAt2D($vArray2D,3,0,"3|0") SetAt2D($vArray2D,3,1,"3|1") SetAt2D($vArray2D,3,2,"3|2") SetAt2D($vArray2D,3,3,"3|3") SetAt2D($vArray2D,3,4,"3|4") SetAt2D($vArray2D,3,5,"3|5") SetAt2D($vArray2D,4,0,"4|0") SetAt2D($vArray2D,4,1,"4|1") SetAt2D($vArray2D,4,2,"4|2") SetAt2D($vArray2D,4,3,"4|3") SetAt2D($vArray2D,4,4,"4|4") SetAt2D($vArray2D,4,5,"4|5") SetAt2D($vArray2D,5,0,"5|0") SetAt2D($vArray2D,5,1,"5|1") SetAt2D($vArray2D,5,2,"5|2") SetAt2D($vArray2D,5,3,"5|3") SetAt2D($vArray2D,5,4,"5|4") SetAt2D($vArray2D,5,5,"5|5") Display($vArray2D) $Rt = Delete2D($vArray2D,1,2) ;Delete2D(ByRef $CArray2D,$RowIndex = 0,$RowsCount = 1,$ColuIndex = 0,$ColsCount = 0) ;Delete 2 Rows In The RowIndex 1 ; RowsCount = 2 ; RowIndex ==> 1 ; ;int ColuIndex = 0,int ColsCount = 0 Display($vArray2D) $Rt = Delete2D($vArray2D,0,0,1,2) ;Delete2D(ByRef $CArray2D,$RowIndex = 0,$RowsCount = 1,$ColuIndex = 0,$ColsCount = 0) ;Delete 2 Columns In The ColuIndex 1 ; ColsCount = 2 ; ColuIndex ==> 1 ;int RowIndex = 0,int RowsCount = 0 Display($vArray2D) $Rt = Delete2D($vArray2D,1,2,1,2) ;Delete2D(ByRef $CArray2D,$RowIndex = 0,$RowsCount = 1,$ColuIndex = 0,$ColsCount = 0) ;Delete 2 Rows And 2 Columns In The RowIndex 1 And ColuIndex 1 ;RowsCount = 2 ; RowIndex ==> 1 ;ColsCount = 2 ; ColuIndex ==> 1 Display($vArray2D) DeleteCArray2D($vArray2D) DeleteCArray2D.au3 #include "CArray.au3" $vArray2D = CArray2D(6,6) SetAt2D($vArray2D,0,0,"0|0") SetAt2D($vArray2D,0,1,"0|1") SetAt2D($vArray2D,0,2,"0|2") SetAt2D($vArray2D,0,3,"0|3") SetAt2D($vArray2D,0,4,"0|4") SetAt2D($vArray2D,0,5,"0|5") SetAt2D($vArray2D,1,0,"1|0") SetAt2D($vArray2D,1,1,"1|1") SetAt2D($vArray2D,1,2,"1|2") SetAt2D($vArray2D,1,3,"1|3") SetAt2D($vArray2D,1,4,"1|4") SetAt2D($vArray2D,1,5,"1|5") SetAt2D($vArray2D,2,0,"2|0") SetAt2D($vArray2D,2,1,"2|1") SetAt2D($vArray2D,2,2,"2|2") SetAt2D($vArray2D,2,3,"2|3") SetAt2D($vArray2D,2,4,"2|4") SetAt2D($vArray2D,2,5,"2|5") SetAt2D($vArray2D,3,0,"3|0") SetAt2D($vArray2D,3,1,"3|1") SetAt2D($vArray2D,3,2,"3|2") SetAt2D($vArray2D,3,3,"3|3") SetAt2D($vArray2D,3,4,"3|4") SetAt2D($vArray2D,3,5,"3|5") SetAt2D($vArray2D,4,0,"4|0") SetAt2D($vArray2D,4,1,"4|1") SetAt2D($vArray2D,4,2,"4|2") SetAt2D($vArray2D,4,3,"4|3") SetAt2D($vArray2D,4,4,"4|4") SetAt2D($vArray2D,4,5,"4|5") SetAt2D($vArray2D,5,0,"5|0") SetAt2D($vArray2D,5,1,"5|1") SetAt2D($vArray2D,5,2,"5|2") SetAt2D($vArray2D,5,3,"5|3") SetAt2D($vArray2D,5,4,"5|4") SetAt2D($vArray2D,5,5,"5|5") Display($vArray2D) DeleteCArray2D($vArray2D) MsgBox(0,"MSG",$vArray2D) FreeCArray2D.au3 #include "CArray.au3" $vArray2D = CArray2D(6,6) SetAt2D($vArray2D,0,0,"0|0") SetAt2D($vArray2D,0,1,"0|1") SetAt2D($vArray2D,0,2,"0|2") SetAt2D($vArray2D,0,3,"0|3") SetAt2D($vArray2D,0,4,"0|4") SetAt2D($vArray2D,0,5,"0|5") SetAt2D($vArray2D,1,0,"1|0") SetAt2D($vArray2D,1,1,"1|1") SetAt2D($vArray2D,1,2,"1|2") SetAt2D($vArray2D,1,3,"1|3") SetAt2D($vArray2D,1,4,"1|4") SetAt2D($vArray2D,1,5,"1|5") SetAt2D($vArray2D,2,0,"2|0") SetAt2D($vArray2D,2,1,"2|1") SetAt2D($vArray2D,2,2,"2|2") SetAt2D($vArray2D,2,3,"2|3") SetAt2D($vArray2D,2,4,"2|4") SetAt2D($vArray2D,2,5,"2|5") SetAt2D($vArray2D,3,0,"3|0") SetAt2D($vArray2D,3,1,"3|1") SetAt2D($vArray2D,3,2,"3|2") SetAt2D($vArray2D,3,3,"3|3") SetAt2D($vArray2D,3,4,"3|4") SetAt2D($vArray2D,3,5,"3|5") SetAt2D($vArray2D,4,0,"4|0") SetAt2D($vArray2D,4,1,"4|1") SetAt2D($vArray2D,4,2,"4|2") SetAt2D($vArray2D,4,3,"4|3") SetAt2D($vArray2D,4,4,"4|4") SetAt2D($vArray2D,4,5,"4|5") SetAt2D($vArray2D,5,0,"5|0") SetAt2D($vArray2D,5,1,"5|1") SetAt2D($vArray2D,5,2,"5|2") SetAt2D($vArray2D,5,3,"5|3") SetAt2D($vArray2D,5,4,"5|4") SetAt2D($vArray2D,5,5,"5|5") Display($vArray2D) FreeCArray2D($vArray2D) Display($vArray2D) Insert_2D.au3 #include "CArray.au3" $vArray2D = CArray2D(4,4) SetAt2D($vArray2D,0,0,"0|0") SetAt2D($vArray2D,0,1,"0|1") SetAt2D($vArray2D,0,2,"0|2") SetAt2D($vArray2D,0,3,"0|3") SetAt2D($vArray2D,1,0,"1|0") SetAt2D($vArray2D,1,1,"1|1") SetAt2D($vArray2D,1,2,"1|2") SetAt2D($vArray2D,1,3,"1|3") SetAt2D($vArray2D,2,0,"2|0") SetAt2D($vArray2D,2,1,"2|1") SetAt2D($vArray2D,2,2,"2|2") SetAt2D($vArray2D,2,3,"2|3") SetAt2D($vArray2D,3,0,"3|0") SetAt2D($vArray2D,3,1,"3|1") SetAt2D($vArray2D,3,2,"3|2") SetAt2D($vArray2D,3,3,"3|3") Display($vArray2D) $Rt = Insert2D($vArray2D,1,2) ;Insert2D(ByRef $CArray2D,$RowIndex = 0,$RowsCount = 1,$ColuIndex = 0,$ColsCount = 0) ;Insert 2 Rows In The RowIndex 1 ; RowsCount = 2 ; RowIndex ==> 1 ; ;int ColuIndex = 0,int ColsCount = 0 Display($vArray2D) $Rt = Insert2D($vArray2D,0,0,1,2) ;Insert2D(ByRef $CArray2D,$RowIndex = 0,$RowsCount = 1,$ColuIndex = 0,$ColsCount = 0) ;Insert 2 Columns In The ColuIndex 1 ; ColsCount = 2 ; ColuIndex ==> 1 ;int RowIndex = 0,int RowsCount = 0 Display($vArray2D) $Rt = Insert2D($vArray2D,1,2,1,2) ;Insert2D(ByRef $CArray2D,$RowIndex = 0,$RowsCount = 1,$ColuIndex = 0,$ColsCount = 0) ;Insert 2 Rows And 2 Columns In The RowIndex 1 And ColuIndex 1 ;RowsCount = 2 ; RowIndex ==> 1 ;ColsCount = 2 ; ColuIndex ==> 1 Display($vArray2D) DeleteCArray2D($vArray2D) SetGet2D.au3 #include "CArray.au3" $iArray2D = CArray2D(3,3) ; 3 ==> Rows Count ; 3 ==> Column Count For $i = 0 To 2 For $j = 0 To 3 ; 0 To 3 ==> Over the Count of columns $Rt = SetAt2D($iArray2D,$i,$j,($i * $j)) ; SetAt2D($iArray2D,i,j,(i * j)) if ($Rt = false And @error) Then ; Test Errors MsgBox(0,"BOOL","false") Else MsgBox(0,"BOOL","true") EndIf ; i ==> Row Index ; j ==> Column Index ; (i * j) ==> vValue Next Next Display($iArray2D) DeleteCArray2D($iArray2D) $vArray2D = CArray2D(3,3) SetAt2D($vArray2D,0,0,"0|0") SetAt2D($vArray2D,0,1,"0|1") SetAt2D($vArray2D,0,2,"0|2") SetAt2D($vArray2D,1,0,"1|0") SetAt2D($vArray2D,1,1,"1|1") SetAt2D($vArray2D,1,2,"1|2") SetAt2D($vArray2D,2,0,"2|0") SetAt2D($vArray2D,2,1,"2|1") SetAt2D($vArray2D,2,2,"2|2") For $i = 0 To 2 For $j = 0 To 3 ; 0 To 3 ==> Over the Count of columns $vValue = GetAt2D($vArray2D,$i,$j) ;GetAt2D(ByRef $CArray2D,$RowIndex,$ColuIndex); i ==> Row Index ; j ==> Column Index ;Return ==> vValue if (@error) Then ; Test Errors MsgBox(0,"@error",@error) Else MsgBox(0,"No Error",$vValue) EndIf Next Next Display($vArray2D) DeleteCArray2D($vArray2D) $nArray2D = CArray2D(1,1) ; 1 ==> Rows Count ; 1 ==> Column Count For $i = 0 To 9 For $j = 0 To 5 $Rt = SetAtGrow2D($nArray2D,$i,$j,($i * $j)) ; iArray2D(i,j,(i * j)) ;SetAtGrow2D(ByRef $CArray2D,$RowIndex,$ColuIndex,$vValue) ; i ==> Row Index ; j ==> Column Index ; (i * j) ==> vValue Next Next Display($nArray2D) DeleteCArray2D($nArray2D) UBoundReDim_2D.au3 #include "CArray.au3" $iArray2D = CArray2D(0,0) ; 0 ==> Rows Count ; 0 ==> Column Count ReDim2D($iArray2D,4,4) ; 4 ==> Rows Count ; 4 ==> Columns Count ;ReDim2D(ByRef $CArray2D,$RowsCount,$ColusCount) Display($iArray2D) $RowsCount = UBound2D($iArray2D,1) ; Dimension = 1 ; Get Rows Count $ColsCount = UBound2D($iArray2D,2) ; Dimension = 2 ; Get Columns Count ;UBound2D(ByRef $CArray2D , $Dimension = 1) MsgBox(0,"UBound","$RowsCount = " & $RowsCount & " ; $ColsCount = " & $ColsCount) DeleteCArray2D($iArray2D) $jArray2D = CArray2D(0,5) ; 0 ==> Rows Count ; 5 ==> Column Count ReDim2D($jArray2D,3,5) ; 3 ==> Rows Count ; 5 ==> Columns Count Display($jArray2D) DeleteCArray2D($jArray2D) $nArray2D = CArray2D(5,0) ; 5 ==> Rows Count ; 0 ==> Column Count ReDim2D($nArray2D,5,3) ; 5 ==> Rows Count ; 3 ==> Columns Count Display($nArray2D) DeleteCArray2D($nArray2D) $vArray2D = CArray2D(4,4) ; 4 ==> Rows Count ; 4 ==> Columns Count SetAt2D($vArray2D,0,0,"0|0") SetAt2D($vArray2D,0,1,"0|1") SetAt2D($vArray2D,0,2,"0|2") SetAt2D($vArray2D,0,3,"0|3") SetAt2D($vArray2D,1,0,"1|0") SetAt2D($vArray2D,1,1,"1|1") SetAt2D($vArray2D,1,2,"1|2") SetAt2D($vArray2D,1,3,"1|3") SetAt2D($vArray2D,2,0,"2|0") SetAt2D($vArray2D,2,1,"2|1") SetAt2D($vArray2D,2,2,"2|2") SetAt2D($vArray2D,2,3,"2|3") SetAt2D($vArray2D,3,0,"3|0") SetAt2D($vArray2D,3,1,"3|1") SetAt2D($vArray2D,3,2,"3|2") SetAt2D($vArray2D,3,3,"3|3") ReDim2D($vArray2D,3,2) ; 3 ==> Rows Count ; 2 ==> Columns Count Display($vArray2D) $RowsCount = UBound2D($vArray2D,1) ; Dimension = 1 ; Get Rows Count $ColsCount = UBound2D($vArray2D,2) ; Dimension = 2 ; Get Columns Count MsgBox(0,"UBound","$RowsCount = " & $RowsCount & " ; $ColsCount = " & $ColsCount) DeleteCArray2D($vArray2D)
×
×
  • Create New...