home *** CD-ROM | disk | FTP | other *** search
/ PC World 2006 February / PCWorld_2006-02_cd.bin / software / vyzkuste / triky / triky.exe / autoit-v3-setup.exe / Include / Array.au3 < prev    next >
Text File  |  2005-02-19  |  20KB  |  633 lines

  1. #include-once
  2.  
  3. ; ------------------------------------------------------------------------------
  4. ;
  5. ; AutoIt Version: 3.0
  6. ; Language:       English
  7. ; Description:    Functions that assist with array management.
  8. ;
  9. ; ------------------------------------------------------------------------------
  10.  
  11.  
  12.  
  13.  
  14. ;===============================================================================
  15. ;
  16. ; Function Name:  _ArrayAdd()
  17. ; Description:    Adds a specified value at the end of an array, returning the
  18. ;                 adjusted array.
  19. ; Author(s):      Jos van der Zande <jdeb@autoitscript.com>
  20. ;
  21. ;===============================================================================
  22. Func _ArrayAdd(ByRef $avArray, $sValue)
  23.     If IsArray($avArray) Then
  24.         ReDim $avArray[UBound($avArray) + 1]
  25.         $avArray[UBound($avArray) - 1] = $sValue
  26.         SetError(0)
  27.         Return 1
  28.     Else
  29.         SetError(1)
  30.         Return 0
  31.     EndIf
  32. EndFunc   ;==>_ArrayAdd
  33.  
  34.  
  35. ;===============================================================================
  36. ;
  37. ; Function Name:  _ArrayBinarySearch()
  38. ; Description:    Uses the binary search algorithm to search through a
  39. ;                 1-dimensional array.
  40. ; Author(s):      Jos van der Zande <jdeb@autoitscript.com>
  41. ;
  42. ;===============================================================================
  43. Func _ArrayBinarySearch(ByRef $avArray, $sKey, $i_Base = 0)
  44.     Local $iLwrLimit = $i_Base
  45.     Local $iUprLimit
  46.     Local $iMidElement
  47.     
  48.     If (Not IsArray($avArray)) Then
  49.         SetError(1)
  50.         Return ""
  51.     EndIf
  52.     
  53.     $iUprLimit = UBound($avArray) - 1
  54.     $iMidElement = Int( ($iUprLimit + $iLwrLimit) / 2)
  55.     ; sKey is smaller than the first entry
  56.     If $avArray[$iLwrLimit] > $sKey Or $avArray[$iUprLimit] < $sKey Then
  57.         SetError(2)
  58.         Return ""
  59.     EndIf
  60.     
  61.     While $iLwrLimit <= $iMidElement And $sKey <> $avArray[$iMidElement]
  62.         If $sKey < $avArray[$iMidElement] Then
  63.             $iUprLimit = $iMidElement - 1
  64.         Else
  65.             $iLwrLimit = $iMidElement + 1
  66.         EndIf
  67.         $iMidElement = Int( ($iUprLimit + $iLwrLimit) / 2)
  68.     WEnd
  69.     If $iLwrLimit > $iUprLimit Then
  70.         ; Entry not found
  71.         SetError(3)
  72.         Return ""
  73.     Else
  74.         ;Entry found , return the index
  75.         SetError(0)
  76.         Return $iMidElement
  77.     EndIf
  78. EndFunc   ;==>_ArrayBinarySearch
  79.  
  80. ;===============================================================================
  81. ;
  82. ; Function Name:    _ArrayCreate()
  83. ; Description:      Create a small array and quickly assign values.
  84. ; Parameter(s):     $v_0  - The first element of the array.
  85. ;                   $v_1  - The second element of the array (optional).
  86. ;                   ...
  87. ;                   $v_20 - The twentyfirst element of the array (optional).
  88. ; Requirement(s):   None.
  89. ; Return Value(s):  The array with values.
  90. ; Author(s):        Dale (Klaatu) Thompson
  91. ; Note(s):          None.
  92. ;
  93. ;===============================================================================
  94. Func _ArrayCreate($v_0, $v_1 = 0, $v_2 = 0, $v_3 = 0, $v_4 = 0, $v_5 = 0, $v_6 = 0, $v_7 = 0, $v_8 = 0, $v_9 = 0, $v_10 = 0, $v_11 = 0, $v_12 = 0, $v_13 = 0, $v_14 = 0, $v_15 = 0, $v_16 = 0, $v_17 = 0, $v_18 = 0, $v_19 = 0, $v_20 = 0)
  95.     
  96.     Local $i_UBound = @NumParams
  97.     Local $av_Array[$i_UBound]
  98.     Local $i_Index
  99.  
  100.     For $i_Index = 0 To ($i_UBound - 1)
  101.         $av_Array[$i_Index] = Eval("v_" & String($i_Index))
  102.     Next
  103.     Return $av_Array
  104. EndFunc   ;==>_ArrayCreate
  105.  
  106.  
  107. ;===============================================================================
  108. ;
  109. ; Function Name:  _ArrayDelete()
  110. ; Description:    Deletes the specified element from the given array, returning
  111. ;                 the adjusted array.
  112. ; Author(s)       Cephas <cephas@clergy.net>
  113. ; Modifications   Array is passed via Byref  - Jos van der zande
  114. ;===============================================================================
  115. Func _ArrayDelete(ByRef $avArray, $iElement)
  116.     Local $iCntr = 0, $iUpper = 0, $iNewSize = 0
  117.     
  118.     If (Not IsArray($avArray)) Then
  119.         SetError(1)
  120.         Return ""
  121.     EndIf
  122.     
  123.     ; We have to define this here so that we're sure that $avArray is an array
  124.     ; before we get it's size.
  125.     Local $iUpper = UBound($avArray)    ; Size of original array
  126.     
  127.     ; If the array is only 1 element in size then we can't delete the 1 element.
  128.     If $iUpper = 1 Then
  129.         SetError(2)
  130.         Return ""
  131.     EndIf
  132.     
  133.     Local $avNewArray[$iUpper - 1]
  134.     If $iElement < 0 Then
  135.         $iElement = 0
  136.     EndIf
  137.     If $iElement > ($iUpper - 1) Then
  138.         $iElement = ($iUpper - 1)
  139.     EndIf
  140.     If $iElement > 0 Then
  141.         For $iCntr = 0 To $iElement - 1
  142.             $avNewArray[$iCntr] = $avArray[$iCntr]
  143.         Next
  144.     EndIf
  145.     If $iElement < ($iUpper - 1) Then
  146.         For $iCntr = ($iElement + 1) To ($iUpper - 1)
  147.             $avNewArray[$iCntr - 1] = $avArray[$iCntr]
  148.         Next
  149.     EndIf
  150.     $avArray = $avNewArray
  151.     SetError(0)
  152.     Return 1
  153. EndFunc   ;==>_ArrayDelete
  154.  
  155.  
  156. ;===============================================================================
  157. ;
  158. ; Function Name:  _ArrayDisplay()
  159. ; Description:    Displays a 1-dimensional array in a message box.
  160. ; Author(s):      Brian Keene <brian_keene@yahoo.com>
  161. ;
  162. ;===============================================================================
  163. Func _ArrayDisplay(ByRef $avArray, $sTitle)
  164.     Local $iCounter = 0, $sMsg = ""
  165.     
  166.     If (Not IsArray($avArray)) Then
  167.         SetError(1)
  168.         Return 0
  169.     EndIf
  170.     
  171.     For $iCounter = 0 To UBound($avArray) - 1
  172.         $sMsg = $sMsg & "[" & $iCounter & "]    = " & StringStripCR($avArray[$iCounter]) & @CR
  173.     Next
  174.     
  175.     MsgBox(4096, $sTitle, $sMsg)
  176.     SetError(0)
  177.     Return 1
  178. EndFunc   ;==>_ArrayDisplay
  179.  
  180.  
  181. ;===============================================================================
  182. ;
  183. ; Function Name:  _ArrayInsert()
  184. ; Description:    Add a new value at the specified position.
  185. ;
  186. ; Author(s):      Jos van der Zande <jdeb@autoitscript.com>
  187. ;
  188. ;===============================================================================
  189. Func _ArrayInsert(ByRef $avArray, $iElement, $sValue = "")
  190.     Local $iCntr = 0
  191.     
  192.     If Not IsArray($avArray) Then
  193.         SetError(1)
  194.         Return 0
  195.     EndIf
  196.     ; Add 1 to the Array
  197.     ReDim $avArray[UBound($avArray) + 1]
  198.     ; Move aqll entries one up till the specified Elemnt
  199.     For $iCntr = UBound($avArray) - 1 To $iElement + 1 Step - 1
  200.         $avArray[$iCntr] = $avArray[$iCntr - 1]
  201.     Next
  202.     ; add the value in the specified element
  203.     $avArray[$iCntr] = $sValue
  204.     Return 1
  205. EndFunc   ;==>_ArrayInsert
  206.  
  207.  
  208. ;===============================================================================
  209. ;
  210. ; Function Name:  _ArrayMax()
  211. ; Description:    Returns the highest value held in an array.
  212. ; Author(s):      Cephas <cephas@clergy.net>
  213. ;
  214. ;                 Jos van der Zande
  215. ; Modified:       Added $iCompNumeric and $i_Base parameters and logic
  216. ;===============================================================================
  217. Func _ArrayMax($avArray, $iCompNumeric = 0, $i_Base = 0)
  218.     If IsArray($avArray) Then
  219.         Return $avArray[_ArrayMaxIndex($avArray, $iCompNumeric, $i_Base) ]
  220.     Else
  221.         SetError(1)
  222.         Return ""
  223.     EndIf
  224. EndFunc   ;==>_ArrayMax
  225.  
  226.  
  227. ;===============================================================================
  228. ;
  229. ; Function Name:  _ArrayMaxIndex()
  230. ; Description:    Returns the index where the highest value occurs in the array.
  231. ; Author(s):      Cephas <cephas@clergy.net>
  232. ;
  233. ;                 Jos van der Zande
  234. ; Modified:       Added $iCompNumeric and $i_Base parameters and logic
  235. ;===============================================================================
  236. Func _ArrayMaxIndex($avArray, $iCompNumeric = 0, $i_Base = 0)
  237.     Local $iCntr, $iMaxIndex = $i_Base
  238.     
  239.     If Not IsArray($avArray) Then
  240.         SetError(1)
  241.         Return ""
  242.     EndIf
  243.     
  244.     Local $iUpper = UBound($avArray)
  245.     For $iCntr = $i_Base To ($iUpper - 1)
  246.         If $iCompNumeric = 1 Then
  247.             If Number($avArray[$iMaxIndex]) < Number($avArray[$iCntr]) Then
  248.                 $iMaxIndex = $iCntr
  249.             EndIf
  250.         Else
  251.             If $avArray[$iMaxIndex] < $avArray[$iCntr] Then
  252.                 $iMaxIndex = $iCntr
  253.             EndIf
  254.         EndIf
  255.     Next
  256.     SetError(0)
  257.     Return $iMaxIndex
  258. EndFunc   ;==>_ArrayMaxIndex
  259.  
  260.  
  261. ;===============================================================================
  262. ;
  263. ; Function Name:  _ArrayMin()
  264. ; Description:    Returns the lowest value held in an array.
  265. ; Author(s):      Cephas <cephas@clergy.net>
  266. ;
  267. ;                 Jos van der Zande
  268. ; Modified:       Added $iCompNumeric and $i_Base parameters and logic
  269. ;===============================================================================
  270. Func _ArrayMin($avArray, $iCompNumeric = 0, $i_Base = 0)
  271.     If IsArray($avArray) Then
  272.         Return $avArray[_ArrayMinIndex($avArray, $iCompNumeric) ]
  273.     Else
  274.         SetError(1)
  275.         Return ""
  276.     EndIf
  277. EndFunc   ;==>_ArrayMin
  278.  
  279.  
  280. ;===============================================================================
  281. ;
  282. ; Function Name:  _ArrayMinIndex()
  283. ; Description:    Returns the index where the lowest value occurs in the array.
  284. ; Author(s):      Cephas <cephas@clergy.net>
  285. ;
  286. ;                 Jos van der Zande
  287. ; Modified:       Added $iCompNumeric and $i_Base parameters and logic
  288. ;===============================================================================
  289. Func _ArrayMinIndex($avArray, $iCompNumeric = 0, $i_Base = 0)
  290.     Local $iCntr = 0, $iMinIndex = $i_Base
  291.     
  292.     If Not IsArray($avArray) Then
  293.         SetError(1)
  294.         Return ""
  295.     EndIf
  296.     
  297.     Local $iUpper = UBound($avArray)
  298.     For $iCntr = $i_Base To ($iUpper - 1)
  299.         If $iCompNumeric = 1 Then
  300.             If Number($avArray[$iMinIndex]) > Number($avArray[$iCntr]) Then
  301.                 $iMinIndex = $iCntr
  302.             EndIf
  303.         Else
  304.             If $avArray[$iMinIndex] > $avArray[$iCntr] Then
  305.                 $iMinIndex = $iCntr
  306.             EndIf
  307.         EndIf
  308.     Next
  309.     SetError(0)
  310.     Return $iMinIndex
  311. EndFunc   ;==>_ArrayMinIndex
  312.  
  313.  
  314. ;===============================================================================
  315. ;
  316. ; Function Name:  _ArrayPop()
  317. ; Description:    Returns the last element of an array, deleting that element
  318. ;                 from the array at the same time.
  319. ; Author(s):      Cephas <cephas@clergy.net>
  320. ; Modified:       Use Redim to remove last entry.
  321. ;===============================================================================
  322. Func _ArrayPop(ByRef $avArray)
  323.     Local $sLastVal
  324.     If (Not IsArray($avArray)) Then
  325.         SetError(1)
  326.         Return ""
  327.     EndIf
  328.     $sLastVal = $avArray[UBound($avArray) - 1]
  329.     ; remove the last value
  330.     If UBound($avArray) = 1 Then
  331.         $avArray = ""
  332.     Else
  333.         ReDim $avArray[UBound($avArray) - 1]
  334.     EndIf
  335.     ; return last value
  336.     Return $sLastVal
  337. EndFunc   ;==>_ArrayPop
  338.  
  339. ;===============================================================================
  340. ;
  341. ; Function Name:  _ArrayReverse()
  342. ; Description:    Takes the given array and reverses the order in which the
  343. ;                 elements appear in the array.
  344. ; Author(s):      Brian Keene <brian_keene@yahoo.com>
  345. ;
  346. ;                 Jos van der Zande
  347. ; Modified:       Added $i_Base parameter and logic
  348. ;===============================================================================
  349. Func _ArrayReverse(ByRef $avArray, $i_Base = 0)
  350.     If (Not IsArray($avArray)) Then
  351.         SetError(1)
  352.         Return ""
  353.     EndIf
  354.     
  355.     ; Create a copy of the array.
  356.     Local $avNewArray = $avArray
  357.     Local $i_cnt = 1
  358.     Local $iIndex1
  359.     ; Copy the elements in the array till $i_Base
  360.     For $iIndex1 = 0 To $i_Base - 1
  361.         $avArray[$iIndex1] = $avNewArray[$iIndex1]
  362.     Next
  363.     ; Reverse the elements in the array.
  364.     For $iIndex1 = $i_Base To UBound($avNewArray) - 1
  365.         $avArray[$iIndex1] = $avNewArray[UBound($avNewArray) - $i_cnt]
  366.         $i_cnt = $i_cnt + 1
  367.     Next
  368.     
  369.     Return 1
  370. EndFunc   ;==>_ArrayReverse
  371.  
  372.  
  373. ;===============================================================================
  374. ;
  375. ; Function Name:    _ArraySort()
  376. ; Description:      Sort a multi dimensional Array on a specific index using
  377. ;                   the shell sort algorithm
  378. ; Parameter(s):     $a_Array      - Array
  379. ;                   $i_Descending - Sort Descending when 1
  380. ;                   $i_Base       - Start sorting at this Array entry.
  381. ;                   $I_Ubound     - End sorting at this Array entry
  382. ;                   $i_Dim        - Number of dimensions
  383. ;                   $i_SortIndex  - The Index to Sort the Array on.
  384. ;                                 (for multi-dimensional arrays only)
  385. ; Requirement(s):   None
  386. ; Return Value(s):  On Success - 1 and the sorted array is set
  387. ;                   On Failure - 0 and sets @ERROR = 1
  388. ; Author(s):        Jos van der Zande <jdeb@autoitscript.com>
  389. ;                   LazyCoder - added $i_SortIndex option
  390. ;
  391. ;===============================================================================
  392. ;
  393. Func _ArraySort(ByRef $a_Array, $i_Decending = 0, $i_Base = 0, $i_UBound = 0, $i_Dim = 1, $i_SortIndex = 0)
  394.     Local $A_Size, $Gap, $Count, $Temp, $C_Dim
  395.     Local $b_ExchangeValues = 0
  396.     Local $IsChanged = 0
  397.     
  398.     ; Set to ubound when not specified
  399.     If $i_UBound < 1 Then $i_UBound = UBound($a_Array) - 1
  400.     
  401.     If UBound($a_Array) <= $i_UBound Or Not IsNumber($i_UBound) Then
  402.         SetError(1)
  403.         Return 0
  404.     EndIf
  405.     ; Shell sort array
  406.     $A_Size = $i_UBound
  407.     If $A_Size = 1 Then
  408.         $Gap = 1
  409.     Else
  410.         $Gap = Int($A_Size / 2)
  411.     EndIf
  412.     $b_ExchangeValues = 0
  413.     $IsChanged = 0
  414.     ;
  415.     While $Gap <> 0
  416.         $IsChanged = 0
  417.         For $Count = $i_Base To ($A_Size - $Gap)
  418.             $b_ExchangeValues = 0
  419.             If $i_Dim = 1 Then
  420.                 If $i_Decending <> 1 Then; sort array Ascending
  421.                     If $a_Array[$Count] > $a_Array[$Count + $Gap] Then
  422.                         $b_ExchangeValues = 1
  423.                     EndIf
  424.                 Else  ; sort array Descending
  425.                     If $a_Array[$Count] < $a_Array[$Count + $Gap] Then
  426.                         $b_ExchangeValues = 1
  427.                     EndIf
  428.                 EndIf
  429.                 If ($b_ExchangeValues) Then
  430.                     $Temp = $a_Array[$Count]
  431.                     $a_Array[$Count] = $a_Array[$Count + $Gap]
  432.                     $a_Array[$Count + $Gap] = $Temp
  433.                     $IsChanged = 1
  434.                 EndIf
  435.             Else
  436.                 If $i_Decending <> 1 Then; sort array Ascending
  437.                     If $a_Array[$Count][$i_SortIndex] > $a_Array[$Count + $Gap][$i_SortIndex] Then
  438.                         $b_ExchangeValues = 1
  439.                     EndIf
  440.                 Else  ; sort array Descending
  441.                     If $a_Array[$Count][$i_SortIndex] < $a_Array[$Count + $Gap][$i_SortIndex] Then
  442.                         $b_ExchangeValues = 1
  443.                     EndIf
  444.                 EndIf
  445.                 If ($b_ExchangeValues) Then
  446.                     For $C_Dim = 0 To $i_Dim - 1
  447.                         $Temp = $a_Array[$Count][$C_Dim]
  448.                         $a_Array[$Count][$C_Dim] = $a_Array[$Count + $Gap][$C_Dim]
  449.                         $a_Array[$Count + $Gap][$C_Dim] = $Temp
  450.                         $IsChanged = 1
  451.                     Next
  452.                 EndIf
  453.             EndIf
  454.         Next
  455.         ; If no changes were made to array, decrease $gap size
  456.         If $IsChanged = 0 Then
  457.             $Gap = Int($Gap / 2)
  458.         EndIf
  459.     WEnd
  460.     Return 1
  461. EndFunc   ;==>_ArraySort
  462.  
  463.  
  464. ;===============================================================================
  465. ;
  466. ; Function Name:  _ArraySwap()
  467. ; Description:    Swaps two elements of an array.
  468. ; Author(s):      David Nuttall <danuttall@rocketmail.com>
  469. ;
  470. ;===============================================================================
  471. Func _ArraySwap(ByRef $svector1, ByRef $svector2)
  472.     Local $sTemp = $svector1
  473.     
  474.     $svector1 = $svector2
  475.     $svector2 = $sTemp
  476.     
  477.     SetError(0)
  478. EndFunc   ;==>_ArraySwap
  479.  
  480.  
  481. ;===============================================================================
  482. ;
  483. ; Function Name:  _ArrayToClip()
  484. ; Description:    Sends the contents of an array to the clipboard.
  485. ; Author(s):      Cephas <cephas@clergy.net>
  486. ;
  487. ;                 Jos van der Zande
  488. ; Modified:       Added $i_Base parameter and logic
  489. ;===============================================================================
  490. Func _ArrayToClip($avArray, $i_Base = 0)
  491.     Local $iCntr, $iRetVal = 0, $sCr = "", $sText = ""
  492.     
  493.     If (IsArray($avArray)) Then
  494.         For $iCntr = $i_Base To (UBound($avArray) - 1)
  495.             $iRetVal = 1
  496.             If $iCntr > $i_Base Then
  497.                 $sCr = @CR
  498.             EndIf
  499.             $sText = $sText & $sCr & $avArray[$iCntr]
  500.         Next
  501.     EndIf
  502.     ClipPut($sText)
  503.     Return $iRetVal
  504. EndFunc   ;==>_ArrayToClip
  505.  
  506.  
  507. ;===============================================================================
  508. ;
  509. ; Function Name:  _ArrayToString()
  510. ; Description:    Places the elements of an array into a single string,
  511. ;                 separated by the specified delimiter.
  512. ; Author(s):      Brian Keene <brian_keene@yahoo.com>
  513. ;
  514. ;===============================================================================
  515. Func _ArrayToString(ByRef $avArray, $sDelim, $iStart = 0, $iEnd = 0)
  516.     ; Declare local variables.
  517.     Local $iCntr = 0, $iUBound = 0, $sResult = ""
  518.     
  519.     ; If $avArray is an array then set var for efficiency sake.
  520.     If (IsArray($avArray)) Then
  521.         $iUBound = UBound($avArray) - 1
  522.     EndIf
  523.     If $iEnd = 0 Then $iEnd = $iUBound
  524.     ; Check for parameter validity.
  525.     Select
  526.         Case (Not IsArray($avArray))
  527.             SetError(1)
  528.             Return ""
  529.         Case( ($iUBound + 1) < 2 Or UBound($avArray, 0) > 1)
  530.             SetError(2)
  531.             Return ""
  532.         Case (Not IsInt($iStart))
  533.             SetError(3)
  534.             Return ""
  535.         Case (Not IsInt($iEnd))
  536.             SetError(5)
  537.             Return ""
  538.         Case (Not IsString($sDelim))
  539.             SetError(7)
  540.             Return ""
  541.         Case ($sDelim = "")
  542.             SetError(8)
  543.             Return ""
  544.         Case (StringLen($sDelim) > 1)
  545.             SetError(9)
  546.             Return ""
  547.         Case ($iStart = -1 And $iEnd = -1)
  548.             $iStart = 0
  549.             $iEnd = $iUBound
  550.         Case ($iStart < 0)
  551.             SetError(4)
  552.             Return ""
  553.         Case ($iEnd < 0)
  554.             SetError(6)
  555.             Return ""
  556.     EndSelect
  557.     
  558.     ; Make sure that $iEnd <= to the size of the array.
  559.     If ($iEnd > $iUBound) Then
  560.         $iEnd = $iUBound
  561.     EndIf
  562.     
  563.     ; Combine the elements into the string.
  564.     For $iCntr = $iStart To $iEnd
  565.         $sResult = $sResult & $avArray[$iCntr]
  566.         If ($iCntr < $iEnd) Then
  567.             $sResult = $sResult & $sDelim
  568.         EndIf
  569.     Next
  570.     
  571.     SetError(0)
  572.     Return $sResult
  573. EndFunc   ;==>_ArrayToString
  574.  
  575. ;===============================================================================
  576. ;
  577. ; FunctionName:     _ArrayTrim()
  578. ; Description:      Trims all elements in an array a certain number of characters.
  579. ; Syntax:           _ArrayTrim( $aArray, $iTrimNum , [$iTrimDirection] , [$iBase] , [$iUbound] )
  580. ; Parameter(s):     $aArray              - The array to trim the items of
  581. ;                   $iTrimNum            - The amount of characters to trim
  582. ;                    $iTrimDirection     - 0 to trim left, 1 to trim right
  583. ;                                            [Optional] : Default = 0
  584. ;                   $iBase               - Start trimming at this element in the array
  585. ;                                            [Optional] : Default = 0
  586. ;                   $iUbound             - End trimming at this element in the array
  587. ;                                            [Optional] : Default = Full Array
  588. ; Requirement(s):   None
  589. ; Return Value(s):  1 - If invalid array
  590. ;                   2 - Invalid base boundry parameter
  591. ;                   3 - Invalid end boundry parameter
  592. ;                   4 - If $iTrimDirection is not a zero or a one
  593. ;                    Otherwise it returns the new trimmed array
  594. ; Author(s):        Adam Moore (redndahead)
  595. ; Note(s):          None
  596. ;
  597. ;===============================================================================
  598. Func _ArrayTrim($aArray, $iTrimNum, $iTrimDirection = 0, $iBase = 0, $iUBound = 0)
  599.     Local $iArrayNum, $i
  600.     
  601.     ;Validate array and options given
  602.     If UBound($aArray) = 0 Then
  603.         SetError(1)
  604.         Return $aArray
  605.     EndIf
  606.     
  607.     If $iBase < 0 Or Not IsNumber($iBase) Then
  608.         SetError(2)
  609.         Return $aArray
  610.     EndIf
  611.     
  612.     If UBound($aArray) <= $iUBound Or Not IsNumber($iUBound) Then
  613.         SetError(3)
  614.         Return $aArray
  615.     EndIf
  616.     
  617.     ; Set to ubound when not specified
  618.     If $iUBound < 1 Then $iUBound = UBound($aArray) - 1
  619.     
  620.     If $iTrimDirection < 1 Or $iTrimDirection > 2 Then
  621.         SetError(4)
  622.         Return
  623.     EndIf
  624.     ;Trim it off
  625.     For $i = $iBase To $iUBound
  626.         If $iTrimDirection = 0 Then
  627.             $aArray[$i] = StringTrimLeft($aArray[$i], $iTrimNum)
  628.         Else
  629.             $aArray[$i] = StringTrimRight($aArray[$i], $iTrimNum)
  630.         EndIf
  631.     Next
  632.     Return $aArray
  633. EndFunc   ;==>_ArrayTrim