Jump to content

Recommended Posts

Posted (edited)

Hi All,

I intend on keeping custom functions/UDFs (works in progress) here; if anyone wants to use any code, feel free.

String functions:

#AutoIt3Wrapper_AU3Check_Parameters=-d -w- 1 -w 2 -w 3 -w 4 -w 5 -w 6

#include-once

; #FUNCTION# ====================================================================================================================
; Name ..........:  _DateTimeGet
; Description ...:  Returns the date and time formatted for use in sortable filenames, logs, listviews, etc.
; Syntax ........:  _DateTimeGet(iType = 1[, $bHumanFormat = False])
; Parameters ....:  $iType              - [optional] an integer value. Default is 1.
;                                       1 - Date and time in file-friendly format; 20190115_113756
;                                       2 - Date in file-friendly format; 20190115
;                                       3 - Time in file friendly format; 113756
;                   $bHumanFormat       - [optional] a boolean value. Default is False.
;                                       True - Includes slashes in the date and colons in the time with a space inbetween
;                                       False - No slashes or colons included with an underscore inbetween
; Return values .:  Success             - String
;                   Failure             - Sets @error to non-zero and returns an empty string
; Author ........:  Sam Coates
; ===============================================================================================================================
Func _DateTimeGet($iType = 1, $bHumanFormat = False)

    If $iType < 1 Or $iType > 3 Then Return (SetError(-1, 0, ""))

    ;; Param1:
    ;; 1 = Date and time in file friendly format:   20190115_113756
    ;; 2 = Date in file friendly format:            20190115
    ;; 3 = Time in file friendly format:            113756

    ;; Param2:
    ;; True = Use human-readable format:            15/01/2019 11:37:56

    Local $sTime = @HOUR & ":" & @MIN & ":" & @SEC
    Local $sDate = @MDAY & "/" & @MON & "/" & @YEAR

    If $iType = 1 Then
        If $bHumanFormat = False Then
            $sTime = StringReplace($sTime, ":", "")
            $sDate = StringReplace($sDate, "/", "")
            $sDate = StringTrimLeft($sDate, 4) & StringMid($sDate, 3, 2) & StringLeft($sDate, 2)
            Return ($sDate & "_" & $sTime)
        Else
            Return ($sDate & " " & $sTime)
        EndIf
    ElseIf $iType = 2 Then
        If $bHumanFormat = False Then
            $sDate = StringReplace($sDate, "/", "")
            $sDate = StringTrimLeft($sDate, 4) & StringMid($sDate, 3, 2) & StringLeft($sDate, 2)
        EndIf
        Return ($sDate)
    ElseIf $iType = 3 Then
        If $bHumanFormat = False Then
            $sTime = StringReplace($sTime, "/", "")
        EndIf
        Return ($sTime)
    EndIf

EndFunc   ;==>_DateTimeGet

; #FUNCTION# ====================================================================================================================
; Name ..........:  _FileToFileExtension
; Description ...:  Returns a file extension from a filename/FQPN (Fully Qualified Path Name)
; Syntax ........:  _FileToFileExtension($sPath)
; Parameters ....:  $sPath              - a string value.
; Return values .:  Success             - String
;                   Failure             - Empty string as returned from StringTrimLeft()
; Author ........:  Sam Coates
; ===============================================================================================================================
Func _FileToFileExtension($sPath)

    Return (StringTrimLeft($sPath, StringInStr($sPath, ".", 0, -1)))

EndFunc   ;==>_FileToFileExtension

; #FUNCTION# ====================================================================================================================
; Name ..........:  _FileToFileName
; Description ...:  Returns a filename from a FQPN (Fully Qualified Path Name)
; Syntax ........:  _FileToFileName($sPath[, $bIncludeExtension = True])
; Parameters ....:  $sPath              - a string value.
;                   $bIncludeExtension  - [optional] a boolean value. Default is True.
; Return values .:  Success             - String
;                   Failure             - Empty string as returned from StringLeft()
; Author ........:  Sam Coates
; ===============================================================================================================================
Func _FileToFileName($sPath, $bIncludeExtension = True)

    Local $sReturn = StringTrimLeft($sPath, StringInStr($sPath, "\", 0, -1))
    If $bIncludeExtension = False Then $sReturn = StringLeft($sReturn, StringInStr($sReturn, ".", 0, -1) - 1)
    Return ($sReturn)

EndFunc   ;==>_FileToFileName

; #FUNCTION# ====================================================================================================================
; Name ..........:  _FileToFilePath
; Description ...:  Returns a folder path from a FQPN (Fully Qualified Path Name)
; Syntax ........:  _FileToFilePath($sPath)
; Parameters ....:  $sPath              - a string value.
; Return values .:  Success             - String
;                   Failure             - Empty string as returned from StringLeft()
; Author ........:  Sam Coates
; ===============================================================================================================================
Func _FileToFilePath($sPath)

    Return (StringLeft($sPath, StringInStr($sPath, "\", 0, -1) - 1))

EndFunc   ;==>_FileToFilePath

; #FUNCTION# ====================================================================================================================
; Name ..........:  _StringLeft
; Description ...:  Searches for a string inside a string, then removes everything on the right of that string
; Syntax ........:  _StringLeft($sString, $sRemove[, $iCaseSense = 0, $iOccurrence = 1])
; Parameters ....:  $sString            - a string value. The string to search inside.
;                   $sRemove            - a string value. The string to search for.
;                   $iCaseSense         - an integer value. Flag to indicate if the operations should be case sensitive.
;                   $iOccurrence        - an integer value. Which occurrence of the substring to find in the string. Use a
;                                         negative occurrence to search from the right side.
; Return values .:  Success             - String
;                   Failure             - Empty string as returned from StringLeft()
; Author ........:  Sam Coates
; ===============================================================================================================================
Func _StringLeft($sString, $sRemove, $iCaseSense = 0, $iOccurrence = 1)

    Return (StringLeft($sString, StringInStr($sString, $sRemove, $iCaseSense, $iOccurrence) - 1))

EndFunc   ;==>_StringLeft

; #FUNCTION# ====================================================================================================================
; Name ..........:  _StringRandom
; Description ...:  Returns a string of random characters
; Syntax ........:  _StringRandom($iAmount[, $iType = 1])
; Parameters ....:  $iAmount            - an integer value. Length of returned string
;                   $iType              - [optional] an integer value. Default is 1.
;                                       1 - Return digits (0-9)
;                                       2 - Return hexadecimal (0-9, A - F)
;                                       3 - Return Alphanumeric upper (0-9, A - Z)
;                                       4 - Return Alphanumeric (0-9, A - Z, a - z)
;                                       5 - Return Alpha upper (A - Z)
;                                       6 - Return Alpha (A - Z, a - z)
; Return values .:  Success             - String
;                   Failure             - Empty string and @error flag as follows:
;                   @error :            1 - $iAmount is not a positive integer
;                                       2 - $iType is out of bounds
; Author ........:  Sam Coates
; ===============================================================================================================================
Func _StringRandom($iAmount, $iType = 1)

    If $iAmount < 1 Or IsInt($iAmount) = 0 Then Return (SetError(-1, 0, ""))

    Local $sString = ""
    Local $iRandomLow = 1, $iRandomHigh = 62

    #Tidy_Off
    Local Static $aCharId[63] = [0, Chr(48), Chr(49), Chr(50), Chr(51), Chr(52), Chr(53), Chr(54), Chr(55), Chr(56), Chr(57), Chr(65), Chr(66), Chr(67), _
                                    Chr(68), Chr(69), Chr(70), Chr(71), Chr(72), Chr(73), Chr(74), Chr(75), Chr(76), Chr(77), Chr(78), Chr(79), Chr(80), _
                                    Chr(81), Chr(82), Chr(83), Chr(84), Chr(85), Chr(86), Chr(87), Chr(88), Chr(89), Chr(90), Chr(97), Chr(98), Chr(99), _
                                    Chr(100), Chr(101), Chr(102), Chr(103), Chr(104), Chr(105), Chr(106), Chr(107), Chr(108), Chr(109), Chr(110), Chr(111), _
                                    Chr(112), Chr(113), Chr(114), Chr(115), Chr(116), Chr(117), Chr(118), Chr(119), Chr(120), Chr(121), Chr(122)]
     #Tidy_On

    If $iType = 1 Then ;; digits: 1 - 10
        $iRandomHigh = 10
    ElseIf $iType = 2 Then ;; hexadecimal: 1 - 16
        $iRandomHigh = 16
    ElseIf $iType = 3 Then ;; alnumupper: 1 - 36
        $iRandomHigh = 36
    ElseIf $iType = 4 Then ;; alnum: 1 - 62
        $iRandomHigh = 62
    ElseIf $iType = 5 Then ;; alphaupper: 11 - 36
        $iRandomLow = 11
        $iRandomHigh = 36
    ElseIf $iType = 6 Then ;; alpha: 11 = 62
        $iRandomLow = 11
        $iRandomHigh = 62
    Else
        Return (SetError(-2, 0, ""))
    EndIf

    For $i = 1 To $iAmount
        $sString &= $aCharId[Random($iRandomLow, $iRandomHigh, 1)] ;; append string with corresponding random character from ascii array
    Next

    Return ($sString)

EndFunc   ;==>_StringRandom

; #FUNCTION# ====================================================================================================================
; Name ..........:  _StringTrimLeft
; Description ...:  Searches for a string inside a string, then removes everything on the left of that string
; Syntax ........:  _StringTrimLeft($sString, $sRemove[, $iCaseSense = 0, $iOccurrence = 1])
; Parameters ....:  $sString            - a string value. The string to search inside.
;                   $sRemove            - a string value. The string to search for.
;                   $iCaseSense         - an integer value. Flag to indicate if the operations should be case sensitive.
;                   $iOccurrence        - an integer value. Which occurrence of the substring to find in the string. Use a
;                                         negative occurrence to search from the right side.
; Return values .:  Success             - String
;                   Failure             - Empty string as returned from StringTrimLeft()
; Author ........:  Sam Coates
; ===============================================================================================================================
Func _StringTrimLeft($sString, $sRemove, $iCaseSense = 0, $iOccurrence = 1)

    Return (StringTrimLeft($sString, StringInStr($sString, $sRemove, $iCaseSense, $iOccurrence) + StringLen($sRemove) - 1))

EndFunc   ;==>_StringTrimLeft

Examples:

ConsoleWrite(_StringRandom(100, 6) & @CRLF)

ConsoleWrite(_StringTrimLeft("C:\Windows\System32\cmd.exe", "C:\Windows\System32\") & @CRLF)

ConsoleWrite(_StringLeft("C:\Windows\System32\cmd.exe", "cmd.exe") & @CRLF)

ConsoleWrite(_FileToFileName("C:\Windows\System32\cmd.exe") & @CRLF)

ConsoleWrite(_FileToFilePath("C:\Windows\System32\cmd.exe") & @CRLF)

ConsoleWrite(_FileToFileExtension("C:\Windows\System32\cmd.exe") & @CRLF)

ConsoleWrite(_StringRandom(6, 4) & "-" & _StringRandom(4, 4) & "-" & _StringRandom(4, 4) & "-" & _StringRandom(4, 4) & "-" & _StringRandom(6, 4)&  @CRLF)

 

Edited by Inpho
Posted (edited)

Scripting Dictionary (Map) functions (_MapOfMaps* stuff for reading all ini sections into a map of maps):

#AutoIt3Wrapper_AU3Check_Parameters=-d -w- 1 -w 2 -w 3 -w 4 -w 5 -w 6

#include-once
#include <Array.au3>

; #FUNCTION# ====================================================================================================================
; Name ..........: _MapAddKeyValuePair
; Description ...:
; Syntax ........: _MapAddKeyValuePair($mMap, $sKey, $sValue)
; Parameters ....: $mMap                - a map. The map you want to add the key/value pair to.
;                  $sKey                - a string value.
;                  $sValue              - a string value.
; Return values .: None
; Author ........: iamtheky
; ===============================================================================================================================
Func _MapAddKeyValuePair($mMap, $sKey, $sValue)

    If $mMap.Exists($sKey) Then
        Return (SetError(-1, 0, '"' & $sKey & '"' & ' already exists with a value of ' & '"' & $mMap.Item($sKey) & '"'))
    Else
        $mMap.Add($sKey, $sValue)
    EndIf

EndFunc   ;==>_MapAddKeyValuePair

; #FUNCTION# ====================================================================================================================
; Name ..........: _MapAppendToKey
; Description ...:
; Syntax ........: _MapAppendToKey($mMap, $sKey, $sValue)
; Parameters ....: $mMap                - a map. The map you want to modify the key/value pair in.
;                  $sKey                - a string value. The key you want to append the value to.
;                  $sValue              - a string value. The value you want to append to the key.
; Return values .: None
; Author ........: iamtheky
; ===============================================================================================================================
Func _MapAppendToKey($mMap, $sKey, $sValue)

    Local $sCurrent

    If $mMap.Exists($sKey) Then
        $sCurrent = $mMap.Item($sKey)
        $mMap.Remove($sKey)
        $mMap.Add($sKey, $sCurrent & ";" & $sValue)
    Else
        $mMap.Add($sKey, $sValue)
    EndIf

EndFunc   ;==>_MapAppendToKey

; #FUNCTION# ====================================================================================================================
; Name ..........: _MapFrom2DArray
; Description ...:
; Syntax ........: _MapFrom2DArray($aArray)
; Parameters ....: $aArray              - an array of unknowns.
; Return values .: None
; Author ........: iamtheky
; ===============================================================================================================================
Func _MapFrom2DArray($aArray)

    Local $mMap = ObjCreate("Scripting.Dictionary")

    If Not IsObj($mMap) Then
        Return (SetError(-1, 0, "Object not created"))
    EndIf

    For $i = 0 To UBound($aArray) - 1
        _MapAddKeyValuePair($mMap, $aArray[$i][0], $aArray[$i][1])
    Next

    Return ($mMap)

EndFunc   ;==>_MapFrom2DArray

; #FUNCTION# ====================================================================================================================
; Name ..........: _MapFromIniSection
; Description ...:
; Syntax ........: _MapFromIniSection($sFile, $sSection)
; Parameters ....: $sFile               - a string value.
;                  $sSection            - a string value.
; Return values .: None
; Author ........: iamtheky
; ===============================================================================================================================
Func _MapFromIniSection($sFile, $sSection)

    Local $mMap = _MapInit()

    Local $aArray = IniReadSection($sFile, $sSection)

    For $i = 1 To UBound($aArray) - 1
        $mMap.Add($aArray[$i][0], $aArray[$i][1])
    Next

    Return ($mMap)

EndFunc   ;==>_MapFromIniSection

; #FUNCTION# ====================================================================================================================
; Name ..........: _MapGetValue
; Description ...:
; Syntax ........: _MapGetValue($mMap, $sKey)
; Parameters ....: $mMap                - a map. The map you want to get the value from.
;                  $sKey                - a string value.
; Return values .: None
; Author ........: iamtheky
; ===============================================================================================================================
Func _MapGetValue($mMap, $sKey)

    Return ($mMap.Item($sKey))

EndFunc   ;==>_MapGetValue

; #FUNCTION# ====================================================================================================================
; Name ..........: _MapInit
; Description ...:
; Syntax ........: _MapInit()
; Parameters ....:
; Return values .: None
; Author ........: iamtheky
; ===============================================================================================================================
Func _MapInit()

    Local $mMap = ObjCreate("Scripting.Dictionary")

    If Not IsObj($mMap) Then
        Return (SetError(-1, 0, "Object not created"))
    EndIf

    Return ($mMap)

EndFunc   ;==>_MapInit

; #FUNCTION# ====================================================================================================================
; Name ..........: _MapOfMapsFromIni
; Description ...:
; Syntax ........: _MapOfMapsFromIni($sFile)
; Parameters ....: $sFile               - a string value.
; Return values .: None
; Author ........: Sam Coates
; ===============================================================================================================================
Func _MapOfMapsFromIni($sFile)

    Local $mMap = _MapInit()
    Local $mMapScratch
    Local $sError

    Local $aSections = IniReadSectionNames($sFile)

    For $i = 1 To UBound($aSections) - 1
        $mMapScratch = _MapFromIniSection($sFile, $aSections[$i])
        $sError = _MapAddKeyValuePair($mMap, $aSections[$i], $mMapScratch)
        If @error Then
            ConsoleWrite($sError & @CRLF)
            ContinueLoop
        EndIf
    Next

    Return ($mMap)

EndFunc   ;==>_MapOfMapsFromIni

; #FUNCTION# ====================================================================================================================
; Name ..........: _MapOfMapsGetMap
; Description ...:
; Syntax ........: _MapOfMapsGetMap($mMap, $sMapChildName)
; Parameters ....: $mMap                - a map.  The map you want to extract the map from.
;                  $sMapChildName       - a string value. The name of the map you want to extract.
; Return values .: None
; Author ........: Sam Coates
; ===============================================================================================================================
Func _MapOfMapsGetMap($mMap, $sMapChildName)

    Local $mReturn = _MapGetValue($mMap, $sMapChildName)

    Return ($mReturn)

EndFunc   ;==>_MapOfMapsGetMap

; #FUNCTION# ====================================================================================================================
; Name ..........: _MapOfMapsGetValue
; Description ...:
; Syntax ........: _MapOfMapsGetValue($mMap, $sMapChildName, $sKey)
; Parameters ....: $mMap                - a map. The map which holds the maps.
;                  $sMapChildName       - a string value. The name of the map which holds the key/value pairs.
;                  $sKey                - a string value. The name of the key which you want to retrieve the value from.
; Return values .: None
; Author ........: Sam Coates
; ===============================================================================================================================
Func _MapOfMapsGetValue($mMap, $sMapChildName, $sKey)

    Local $sReturn = _MapGetValue(_MapGetValue($mMap, $sMapChildName), $sKey)

    Return ($sReturn)

EndFunc   ;==>_MapOfMapsGetValue

; #FUNCTION# ====================================================================================================================
; Name ..........: _MapOfMapsToString
; Description ...:
; Syntax ........: _MapOfMapsToString($mMap)
; Parameters ....: $mMap                - a map. The map which holds the maps.
; Return values .: None
; Author ........: Sam Coates
; ===============================================================================================================================
Func _MapOfMapsToString($mMap)

    Local $sReturn = ""

    For $sKey In $mMap.Keys
        $sReturn &= "[" & $sKey & "]" & @CRLF & _MapToString(_MapGetValue($mMap, $sKey), True) & @CRLF & @CRLF
    Next

    Return ($sReturn)

EndFunc   ;==>_MapOfMapsToString

; #FUNCTION# ====================================================================================================================
; Name ..........: _MapReassignKey
; Description ...:
; Syntax ........: _MapReassignKey($mMap, $sKey, $sValue)
; Parameters ....: $mMap                - a map. The map which you want to modify the key/value pair in.
;                  $sKey                - a string value.
;                  $sValue              - a string value.
; Return values .: None
; Author ........: iamtheky
; ===============================================================================================================================
Func _MapReassignKey($mMap, $sKey, $sValue)

    If $mMap.Exists($sKey) Then
        $mMap.Remove($sKey)
        $mMap.Add($sKey, $sValue)
    Else
        $mMap.Add($sKey, $sValue)
    EndIf

EndFunc   ;==>_MapReassignKey

; #FUNCTION# ====================================================================================================================
; Name ..........: _MapRemoveKey
; Description ...:
; Syntax ........: _MapRemoveKey($mMap, $sKey)
; Parameters ....: $mMap                - a map. The map which you want to remove the key/value pair from.
;                  $sKey                - a string value.
; Return values .: None
; Author ........: iamtheky
; ===============================================================================================================================
Func _MapRemoveKey($mMap, $sKey)

    $mMap.Remove($sKey)

EndFunc   ;==>_MapRemoveKey

; #FUNCTION# ====================================================================================================================
; Name ..........: _MapTo2dArray
; Description ...:
; Syntax ........: _MapTo2dArray($mMap)
; Parameters ....: $mMap                - a map. The map you want to export to a 2D array.
; Return values .: None
; Author ........: iamtheky
; ===============================================================================================================================
Func _MapTo2dArray($mMap, $iStartIndex = 1)

    If $iStartIndex < 0 Or $iStartIndex > 1 Then Return(SetError(-1, 0, -1))
    Local $aArray[$mMap.Count + $iStartIndex][2]

    If $iStartIndex = 1 Then $aArray[0][0] = $mMap.Count

    For $sKey In $mMap.Keys
        $aArray[$iStartIndex][0] = $sKey
        $aArray[$iStartIndex][1] = $mMap.Item($sKey)
        $iStartIndex += 1
    Next

    Return ($aArray)

EndFunc   ;==>_MapTo2dArray

; #FUNCTION# ====================================================================================================================
; Name ..........: _MapToArray
; Description ...:
; Syntax ........: _MapToArray($mMap)
; Parameters ....: $mMap                - a map. The map you want to export to an array.
; Return values .: None
; Author ........: iamtheky
; ===============================================================================================================================
Func _MapToArray($mMap)

    Local $aArray[$mMap.Count]

    Local $i = 0
    For $sKey In $mMap.Keys
        $aArray[$i] = $sKey & " = " & $mMap.Item($sKey)
        $i += 1
    Next

    Return ($aArray)

EndFunc   ;==>_MapToArray

; #FUNCTION# ====================================================================================================================
; Name ..........: _MapToIniSection
; Description ...:
; Syntax ........: _MapToIniSection($mMap, $sSection, $sFile[, $fSort = 0])
; Parameters ....: $mMap                - a map. The map you want to export to an ini section.
;                  $sSection            - a string value.
;                  $sFile               - a string value.
;                  $fSort               - [optional] a floating point value. Default is 0.
; Return values .: None
; Author ........: iamtheky
; ===============================================================================================================================
Func _MapToIniSection($mMap, $sSection, $sFile, $fSort = 0)

    Local $aMap = _MapTo2dArray($mMap)

    _ArrayInsert($aMap, 0, UBound($aMap) - 1)
    If $fSort = 1 Then _ArraySort($aMap)

    IniWriteSection($sFile, $sSection, $aMap)
    If @error Then Return (SetError(-1, 0, ""))

    Return (1)

EndFunc   ;==>_MapToIniSection

; #FUNCTION# ====================================================================================================================
; Name ..........: _MapToString
; Description ...:
; Syntax ........: _MapToString($mMap[, $bPadding = False])
; Parameters ....: $mMap                - a map. The map you want to export to a string.
;                  $bPadding            - [optional] a boolean value. Whether to pad the values with a tab. Default is False.
; Return values .: None
; Author ........: iamtheky
; Modified ......: Sam Coates
; ===============================================================================================================================
Func _MapToString($mMap, $bPadding = False)

    Local $sPadding
    If $bPadding = True Then $sPadding = @TAB
    Local $sReturn = ""

    For $sKey In $mMap.Keys
        $sReturn &= $sPadding & $sKey & " = " & $mMap.Item($sKey) & @LF
    Next

    Return (StringReplace($sReturn, @LF, "", -1))

EndFunc   ;==>_MapToString

Examples:

$sFile = "" ;; .ini

$mConfig = _MapOfMapsFromIni($sFile)

$sValue = _MapOfMapsGetValue($mConfig, "Last", "1")
ConsoleWrite($sValue & @CRLF)
$sValue = _MapOfMapsGetValue($mConfig, "Last", "2")
ConsoleWrite($sValue & @CRLF)
$sValue = _MapOfMapsGetValue($mConfig, "Last", "3")
ConsoleWrite($sValue & @CRLF)

msgbox(0, 'Map String - No Sort' , _MapToString($mConfig))
msgbox(0, 'Map String - No Sort' , _MapToString(_MapOfMapsGetMap($mConfig, "Last")))

_ArrayDisplay(_MapTo2dArray($mConfig, 0))
_ArrayDisplay(_MapTo2dArray(_MapOfMapsGetMap($mConfig, "Last")))


$sMaps = _MapOfMapsToString($mConfig)
ConsoleWrite($sMaps & @CRLF)

Sample .ini:

#region Last - Last 10 models updated using Muninn
[Last]
1=SM-N976B|EVR|3.13
2=SM-T585|BTU|3.13
3=SM-T295|BTU|3.13
4=SM-G973F|EVR|3.13
5=SM-A600FN|EVR|3.13
6=SM-A202F|EVR|3.13
7=SM-J415FN|BTU|3.13
8=SM-G975F|EVR|3.13
9=SM-G970F|EVR|3.13
10=SM-A510F|EVR|3.13
#endregion

#region FlashCountTargets - flash counts that will trigger an email
[FlashCountTargets]
Amounts=140000|150000|175000|200000|250000|300000|350000|400000|450000|500000|600000|700000|800000|900000|1000000
#endregion

#region FlashCountEmails - email addresses used when triggered by FlashCountTargets
[FlashCountEmails]
Users=melba23|junkew|jchd|water|iamtheky
#endregion

#region ListType - Top10 for the top 10 used models by hits. Last10 for the Last 10 models assigned by .init
[ListType]
ListType=Top10
#endregion

#region Variants - Key - RadioButton text ;; Value - 2-letter code from .init. Add |Locked to disable the radio from Flash Gui
[Variants]
Deep Black = DB|Locked
La Fleur =LF|Locked
Hugo Boss =HB|Locked
#endregion

 

Edited by Inpho
Posted (edited)

Array stuff:

; #FUNCTION# ====================================================================================================================
; Name ..........: _ArrayFindEmptyRows
; Description ...: Returns an array of indexes (similar to _ArrayFindAll) ready to feed straight into _ArrayDelete.
; Syntax ........: _ArrayFindEmptyRows(Const Byref $aArray[, $iStartRow = 1])
; Parameters ....: $aArray              - [in/out and const] The array to search for empty rows
;                  $iStartRow           - [optional] an integer value. The index to start searching from
; Return values .: Success:             - An array of indexes
;                  Failure              - Empty string and @error flag as follows:
;                                       1 - $aArray is not an array
;                                       2 - $aArray contains one row
;                                       3 - $iStartRow is out of bounds
;                                       4 - No results (unable to find any blank rows)
; Author ........: Sam Coates
; ===============================================================================================================================
Func _ArrayFindEmptyRows(ByRef Const $aArray, $iStartRow = 1)

    If Not IsArray($aArray) Then Return(SetError(-1, 0, "")) ;; Array isn't an array
    If UBound($aArray) < 2 Then Return(SetError(-2, 0, "")) ;; Array only contains one row

    Local $i, $ii
    Local $sResults = ""
    Local $aReturn
    Local $iArrayRows = UBound($aArray) - 1 ;; hold the number of rows
    If $iStartRow > $iArrayRows Then Return(SetError(-3, 0, "")) ;; Check if StartRow isn't out of bounds

    Local $iArrayColumns = UBound($aArray, 2) ;; hold the number of columns
    If @error = 2 Then $iArrayColumns = 1 ;; if error, then 1d array

    If $iArrayColumns = 1 Then ;; if 1d array

        For $i = $iStartRow To $iArrayRows ;; loop through rows
            If $aArray[$i] = "" Then $sResults &= $i & ";" ;; if its blank, save the index
        Next

    ElseIf $iArrayColumns > 1 Then ;; if 2d array

        For $i = $iStartRow To $iArrayRows ;; loop through rows
            For $ii = 0 To $iArrayColumns - 1 ;; loop through columns
                If $aArray[$i][$ii] <> "" Then ExitLoop ;; if a non-blank is found in any cell on a row, skip to next row
                If $ii = $iArrayColumns - 1 Then $sResults &= $i & ";" ;; if we reach the end of the columns and still havent found a non-blank, save the index
            Next
        Next

    EndIf

    If $sResults <> "" Then ;; if we made changes
        $sResults = StringTrimRight($sResults, 1) ;; strip the final semi-colon
    Else ;; if we made no changes
        Return(SetError(-4, 0, "")) ;; No results
    EndIf

    $aReturn = StringSplit($sResults, ";") ;; split the final string

    Return($aReturn) ;; return it

EndFunc

Example:

$aArray = _GenRandomArray()
$aArrayRemoveBlanks = _ArrayFindEmptyRows($aArray)
_ArrayDelete($aArray, $aArrayRemoveBlanks)

Func _GenRandomArray()
    Local $sFile = @TempDir & "\rnd.txt"
    Local $aArrayReturn[100000];[10]
    If FileExists($sFile) = 0 Then
        For $i = 1 To UBound($aArrayReturn) - 1
            ;(Mod($i, 10) = 0) ? ($aArray[$i][0] = (_StringRandom(20, 4)) : ($aArray[$i][0] = "") ;; why won't this work lel
            If Mod($i, 10) <> 0 Then $aArrayReturn[$i] = _StringRandom(20, 4)
        Next
        _FileWriteFromArray($sFile, $aArrayReturn)
    Else
        _FileReadToArray($sFile, $aArrayReturn, 1, "|")

    EndIf

    Return ($aArrayReturn)

EndFunc   ;==>_GenRandomArray

 

Edited by Inpho

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...