Jump to content
Sign in to follow this  
nitekram

Function that takes array and finds unique indexes

Recommended Posts

nitekram

Cannot get my head around this...I have an array of X, and in that array each index has 3 parts, I need to find the unique indexes of the main array

 

so main array would be

[0] ???|abc|down

[1] ???|abc|downorflapping

[2] ???|ccc|ccc

[3] ???|ddd|ddd

[4] ???|xyz|down

[5] ???|xyz|unresponsive

 

so that is the array that comes in, and I think I need to break that up in another array and then compare it to each other, but I am not able to get my head around it...the first element does not matter, but if the second element is found anywhere else in the main array, I need to take only one of them, I would like that to be a variable passed, that way I can call it more then once and get the unique values I am looking for...Anyone got an idea?

 

I have tried many different ways but cannot seem to get it right

$aListAlerts[6] = ["???|abc|down", "???|abc|downorflapping", "???|ccc|ccc", "???|ddd|ddd", "???|xyz|down", "???|xyz|unresponsive"]
 
 
 
 
_ArrayDisplay($aListAlerts, 'all alerts')

    Local $aNewArray[2]

    For $x = 0 To UBound($aListAlerts) - 1
        Local $aTestArray = StringSplit($aListAlerts[$x], '|', 2)
        If UBound($aTestArray) <= 1 Then ContinueLoop
        ConsoleWrite($x & '  X  ' & $aListAlerts[$x] & @CRLF)
        For $y = 0 To UBound($aListAlerts) - 1
            If $y = $x Then ContinueLoop
            If StringInStr($aListAlerts[$y], $aTestArray[1]) Then
                Local $aTestArray2 = StringSplit($aListAlerts[$y], '|', 2)
                ConsoleWrite($y & '  Y  ' & $aListAlerts[$y] & @CRLF)
                If UBound($aTestArray2) <= 1 Then ContinueLoop
                If $aTestArray2[2] <> $aTestArray[2] Then

                    If $aTestArray2[2] = 'Down' Then
                        If $aTestArray[2] = 'DownOrFlapping' Then
                            If _ArraySearch($aNewArray, $aListAlerts[$x]) <> @error Then
                            _ArrayAdd($aNewArray, $aListAlerts[$x])
                            ExitLoop
                            EndIf
                        EndIf
                    ElseIf $aTestArray2[2] = 'DownOrFlapping' Then
                        If $aTestArray[2] = 'Down' Then
                            If _ArraySearch($aNewArray, $aListAlerts[$x]) <> @error Then
                            _ArrayAdd($aNewArray, $aListAlerts[$x])
                            ExitLoop
                            EndIf
                        EndIf
                    Else
                        If _ArraySearch($aNewArray, $aListAlerts[$x]) = @error Then
                        _ArrayAdd($aNewArray, $aListAlerts[$x])
                        ExitLoop
                        EndIf
                    EndIf

                EndIf

            EndIf
        Next
    Next

    _ArrayDisplay($aNewArray)
 

 

edit does not look like tags are working?

edit - learned how to post code yea

Edited by nitekram

All by me:

"Sometimes you have to go back to where you started, to get to where you want to go." 

"Everybody catches up with everyone, eventually" 

"As you teach others, you are really teaching yourself."

From my dad

"Do not worry about yesterday, as the only thing that you can control is tomorrow."

 

WindowsError.gif

WIKI | Tabs; | Arrays; | Strings | Wiki Arrays | How to ask a Question | Forum Search | FAQ | Tutorials | Original FAQ | ONLINE HELP | UDF's Wiki | AutoIt PDF

AutoIt Snippets | Multple Guis | Interrupting a running function | Another Send

StringRegExp | StringRegExp Help | RegEXTester | REG TUTOR | Reg TUTOT 2

AutoItSetOption | Macros | AutoIt Snippets | Wrapper | Autoit  Docs

SCITE | SciteJump | BB | MyTopics | Programming | UDFs | AutoIt 123 | UDFs Form | UDF

Learning to script | Tutorials | Documentation | IE.AU3 | Games? | FreeSoftware | Path_Online | Core Language

Programming Tips

Excel Changes

ControlHover.UDF

GDI_Plus

Draw_On_Screen

GDI Basics

GDI_More_Basics

GDI Rotate

GDI Graph

GDI  CheckExistingItems

GDI Trajectory

Replace $ghGDIPDll with $__g_hGDIPDll

DLL 101?

Array via Object

GDI Swimlane

GDI Plus French 101 Site

GDI Examples UEZ

GDI Basic Clock

GDI Detection

Ternary operator

Share this post


Link to post
Share on other sites
guinness

What about _ArrayUnique?


UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Share this post


Link to post
Share on other sites
nitekram

I do not think that will work, unless I read it wrong. I want to find the element with the letters that match and then find out if there is a matching one and only return one. As each of the elements in the main array are unique - it would just return my main array?


All by me:

"Sometimes you have to go back to where you started, to get to where you want to go." 

"Everybody catches up with everyone, eventually" 

"As you teach others, you are really teaching yourself."

From my dad

"Do not worry about yesterday, as the only thing that you can control is tomorrow."

 

WindowsError.gif

WIKI | Tabs; | Arrays; | Strings | Wiki Arrays | How to ask a Question | Forum Search | FAQ | Tutorials | Original FAQ | ONLINE HELP | UDF's Wiki | AutoIt PDF

AutoIt Snippets | Multple Guis | Interrupting a running function | Another Send

StringRegExp | StringRegExp Help | RegEXTester | REG TUTOR | Reg TUTOT 2

AutoItSetOption | Macros | AutoIt Snippets | Wrapper | Autoit  Docs

SCITE | SciteJump | BB | MyTopics | Programming | UDFs | AutoIt 123 | UDFs Form | UDF

Learning to script | Tutorials | Documentation | IE.AU3 | Games? | FreeSoftware | Path_Online | Core Language

Programming Tips

Excel Changes

ControlHover.UDF

GDI_Plus

Draw_On_Screen

GDI Basics

GDI_More_Basics

GDI Rotate

GDI Graph

GDI  CheckExistingItems

GDI Trajectory

Replace $ghGDIPDll with $__g_hGDIPDll

DLL 101?

Array via Object

GDI Swimlane

GDI Plus French 101 Site

GDI Examples UEZ

GDI Basic Clock

GDI Detection

Ternary operator

Share this post


Link to post
Share on other sites
kylomas

 I need to take only one of them

 

Which one??

Edited by kylomas

Forum Rules         Procedure for posting code

"I like pigs.  Dogs look up to us.  Cats look down on us.  Pigs treat us as equals."

- Sir Winston Churchill

Share this post


Link to post
Share on other sites
kylomas

nitekran,

Try something like this (just displays hit results)

#include <array.au3>

local $aMain[6] = [ '???|abc|down', _
                    '???|abc|downorflapping', _
                    '???|ccc|ccc', _
                    '???|ddd|ddd', _
                    '???|xyz|down', _
                    '???|xyz|unresponsive' ]

; create and populate interim 2D array

local $aTmp[6][2]

for $1 = 0 to ubound($aMain) - 1

    $a10 = stringsplit($aMain[$1],'|')
    $aTmp[$1][0] = $a10[2]
    $aTmp[$1][1] = $a10[3]

Next

; compare each element to every other element - produce hit coordinates of elements

for $1 = 0 to ubound($aTmp,1) - 1
    for $2 = 0 to ubound($aTmp,2) - 1
        for $3 = 0 to ubound($aTmp,1) - 1
            for $4 = 0 to ubound($aTmp,2) - 1
                if $aTmp[$1][$2] = $aTmp[$3][$4] then
                    ConsoleWrite(stringformat('ele [%02i][%02i] = %-15s  matches ele [%02i][%02i] = %-15s',$1,$2,$aTmp[$1][$2],$3,$4,$aTmp[$3][$4]) & @LF)
                EndIf
            Next
        Next
    Next
Next

kylomas

edit: cleaned up / commented code

Edited by kylomas

Forum Rules         Procedure for posting code

"I like pigs.  Dogs look up to us.  Cats look down on us.  Pigs treat us as equals."

- Sir Winston Churchill

Share this post


Link to post
Share on other sites
kylomas

Or using an extended array search UDF (doh! just worked on this and forgot about it!)

#include <array.au3>

local $aMain[6] = [ '???|abc|down', _
                    '???|abc|downorflapping', _
                    '???|ccc|ccc', _
                    '???|ddd|ddd', _
                    '???|xyz|down', _
                    '???|xyz|unresponsive' ]

; create and populate interim 2D array

local $aTmp[6][2]

for $1 = 0 to ubound($aMain) - 1

    $a10 = stringsplit($aMain[$1],'|')
    $aTmp[$1][0] = $a10[2]
    $aTmp[$1][1] = $a10[3]

Next

; compare each element to every other element - produce hit coordinates of elements

for $1 = 0 to ubound($aTmp,1) - 1
    for $2 = 0 to ubound($aTmp,2) - 1
        $a10 = _arrayfindallex($aTmp,$aTmp[$1][$2])
        ConsoleWrite($aTmp[$1][$2] & ' Found at ' & @lf)
        for $i = 0 to ubound($a10) - 1
            ConsoleWrite(@tab & $a10[$i][0] & @lf)
        Next
    next
Next



#region Functions
#include-once

; #INDEX# =======================================================================================================================
; Title .........: Array Functions Not in General Distribution
; AutoIt Version : 3.3.8.1
; Language ......: English
; Description ...: Collection of array functions that do not exist or can be enhanced (suffixed with "ex")
; ===============================================================================================================================

; #CURRENT# =====================================================================================================================
;_ArrayDeleteColumn_Function
;_ArrayFindAll_Function
; ===============================================================================================================================

; #FUNCTION# ====================================================================================================================
; Name...........: _ArrayDeleteColumn
; Description ...: Deletes Any Column of a 2 Dimensional Array
; Syntax.........: _ArrayDeleteColumn(Byref $avSourceArray,$Col = 1)
; Parameters ....: $avSourceArray   - [Byref] A 2 dimensional array of any number of columns.
;                  $iCol            - Integer number of the column that you want to delete.
; Return values .: Success          - @error is set to 0 and an array minus the column to delete is returned.
;                  Failure          - @error is set to one of the following:
;                                    1 - Parameter 1 is not a 2 dimensional array
;                                   |2 - Parameter 2 is not a number
;                                   |3 - Column to delete does not exist in the source array.
; Author ........: kylomas
; Modified.......: 05/03/2013
; Remarks .......: Version 1.0.0
; Example .......: Yes
; ===============================================================================================================================

Func _ArrayDeleteColumn(ByRef $avSourceArray, $iCol = 1)

    ; flush the parms

    If $iCol = -1 Or $iCol = Default Then $iCol = 1

    If UBound($avSourceArray, 0) <> 2 Then Return SetError(1)
    If Not IsNumber($iCol) And Not StringIsDigit($iCol) Then Return SetError(2)
    If $iCol > UBound($avSourceArray, 2) Or $iCol < 1 Then Return SetError(3)

    ; define receiving array with 2ND dimension - 1

    Local $aRet[UBound($avSourceArray, 1)][UBound($avSourceArray, 2) - 1]

    ; populate receiving array

    For $1 = 0 To UBound($aRet, 1) - 1
        For $2 = 0 To UBound($aRet, 2) - 1
            If $2 >= $iCol Then
                $aRet[$1][$2] = $avSourceArray[$1][$2 + 1]
            Else
                $aRet[$1][$2] = $avSourceArray[$1][$2]
            EndIf
        Next
    Next
    Return SetError(0, 0, $aRet)

EndFunc   ;==>_ArrayDeleteColumn

; #FUNCTION# ====================================================================================================================
; Name...........: _ArrayFindAllex
; Description ...: Searches each element in an array for a value based on supplied parameters.
; Syntax.........: _ArrayFindAll(Byref $avSourceArray,$sSearchString,$iSearchType=1,$iCaseSense=0)
; Parameters ....: $avSourceArray   - [Byref] A 1 dimensional array.
;                  $sSearchString   - The string to search for.
;                  $iSearchType     - 0 = match if element contains the search string
;                                   | 1 = match if element is equal to the search string (default)
;                                   | 2 = match if element starts with the search string
;                                   | 3 = match if element ends with search string
;                   $iCaseSense     - 0 = match is not case sensitive (default)
;                                   | 1 = match is case sensitive
;                   $sSrchArgSepStr - A string of user supplied characters used to seperate multiple search arguments (Default is -1)
; Return values .: Success          - @error is set to 0.  Return a 2D array of
;                                   |     [n][0] - The element number that the string was found in
;                                   |     [n][1] - The search string
;                                   |     [n][2] - The value found at that element
;                  Failure          - @error is set to one of the following:
;                                       1 - Parameter 1 is not an array
;                                   |   2 - Search type is invalid
;                                   |   3 - Case sense is invalid
;                                   |   4 - Source array is more than 2 dimensions
;                                   |   5 - Search string not found
; Author ........: kylomas
; Modified.......: 05/03/2013
; Remarks .......: Version 1.0.0
; Example .......: Yes
; ===============================================================================================================================

Func _ArrayFindAllex(ByRef $avSourceArray, $sSearchString, $iSearchType = 1, $iCaseSense = 0, $sSrchArgSepString = -1)

    ; set parm defaults

    If $iSearchType = Default Or $iSearchType = -1 Then $iSearchType = 1
    If $iCaseSense = Default Or $iCaseSense = -1 Then $iCaseSense = 0
    If $iCaseSense = Default Or $iCaseSense = -1 Then $iCaseSense = 0
    If $sSrchArgSepString = Default Then $sSrchArgSepChar = -1

    ; check parameters

    If Not IsArray($avSourceArray) Then Return SetError(1)
    If $iSearchType < 0 Or $iSearchType > 3 Then Return SetError(2)
    If $iCaseSense <> 0 And $iCaseSense <> 1 Then Return SetError(3)

    ; check for multiple search arguments

    If $sSrchArgSepString <> -1 Then

        If StringInStr($sSearchString, $sSrchArgSepString) > 0 Then
            $aSearchString = StringSplit($sSearchString, $sSrchArgSepString, 3)
        EndIf
    Else
        Local $aSearchString[1]
        $aSearchString[0] = $sSearchString

    EndIf

    ; setup work vars

    Local $sTmp, $iElementNumber = 0, $sSaveSearchString = ''
    If UBound($avSourceArray, 0) = 2 Then Local $aTmp[UBound($avSourceArray, 1) * UBound($avSourceArray, 2) + 80][3]
    If UBound($avSourceArray, 0) = 1 Then Local $aTmp[UBound($avSourceArray, 1) + 80][3]

    For $i = 0 To UBound($aSearchString) - 1

        ; save original search argument, escape reserved characters and construct pattern based on parms

        $sSaveSearchString = $aSearchString[$i]

        $aSearchString[$i] = StringRegExpReplace($aSearchString[$i], '[\^\.\*\?\$\[\]\(\)\\\|]', '\\$0')

        ; construct search argument

        Switch $iSearchType
            Case 0
                If $iCaseSense = 0 Then $aSearchString[$i] = '(?is)' & $aSearchString[$i]
                If $iCaseSense = 1 Then $aSearchString[$i] = '(?s)' & $aSearchString[$i]
            Case 1
                If $iCaseSense = 0 Then $aSearchString[$i] = '(?i)^' & $aSearchString[$i] & '$'
                If $iCaseSense = 1 Then $aSearchString[$i] = '^' & $aSearchString[$i] & '$'
            Case 2
                If $iCaseSense = 0 Then $aSearchString[$i] = '(?is)^' & $aSearchString[$i]
                If $iCaseSense = 1 Then $aSearchString[$i] = '(?s)^' & $aSearchString[$i]
            Case 3
                If $iCaseSense = 0 Then $aSearchString[$i] = '(?is)' & $aSearchString[$i] & '$'
                If $iCaseSense = 1 Then $aSearchString[$i] = '(?s)' & $aSearchString[$i] & '$'
        EndSwitch

        ; main loop

        Switch UBound($avSourceArray, 0)
            Case 1
                For $1 = 0 To UBound($avSourceArray, 1) - 1
                    If StringRegExp($avSourceArray[$1], $aSearchString[$i]) = 1 Then
                        $aTmp[$iElementNumber][0] = $1
                        $aTmp[$iElementNumber][1] = $sSaveSearchString
                        $aTmp[$iElementNumber][2] = $avSourceArray[$1]
                        $iElementNumber += 1
                    EndIf
                Next
            Case 2
                For $1 = 0 To UBound($avSourceArray, 1) - 1
                    For $2 = 0 To UBound($avSourceArray, 2) - 1
                        If StringRegExp($avSourceArray[$1][$2], $aSearchString[$i]) = 1 Then
                            $aTmp[$iElementNumber][0] = 'ROW ' & $1 & ' - ' & 'COL ' & $2
                            $aTmp[$iElementNumber][1] = $sSaveSearchString
                            $aTmp[$iElementNumber][2] = $avSourceArray[$1][$2]
                            $iElementNumber += 1
                        EndIf
                    Next
                Next
            Case Else
                Return SetError(4)
        EndSwitch

    Next

    ; find # of hits

    Local $iRowCount = 0
    For $1 = 0 To UBound($aTmp) - 1
        If StringLen($aTmp[$1][0]) > 0 Then ContinueLoop
        $iRowCount = $1
        ExitLoop
    Next

    ; if string not found @error = 5

    If $iRowCount = 0 Then Return SetError(5)

    ; shrink result array and return results

    ReDim $aTmp[$iRowCount][3]
    Return SetError(0, 0, $aTmp)

EndFunc   ;==>_ArrayFindAllex
#endregion Functions

kylomas


Forum Rules         Procedure for posting code

"I like pigs.  Dogs look up to us.  Cats look down on us.  Pigs treat us as equals."

- Sir Winston Churchill

Share this post


Link to post
Share on other sites
guinness

I do not think that will work, unless I read it wrong.

I was thinking you could use the code as an example.


UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Share this post


Link to post
Share on other sites
nitekram

Thanks for your help @kylomas. I will look at your examples and see if I can get my head around them.


All by me:

"Sometimes you have to go back to where you started, to get to where you want to go." 

"Everybody catches up with everyone, eventually" 

"As you teach others, you are really teaching yourself."

From my dad

"Do not worry about yesterday, as the only thing that you can control is tomorrow."

 

WindowsError.gif

WIKI | Tabs; | Arrays; | Strings | Wiki Arrays | How to ask a Question | Forum Search | FAQ | Tutorials | Original FAQ | ONLINE HELP | UDF's Wiki | AutoIt PDF

AutoIt Snippets | Multple Guis | Interrupting a running function | Another Send

StringRegExp | StringRegExp Help | RegEXTester | REG TUTOR | Reg TUTOT 2

AutoItSetOption | Macros | AutoIt Snippets | Wrapper | Autoit  Docs

SCITE | SciteJump | BB | MyTopics | Programming | UDFs | AutoIt 123 | UDFs Form | UDF

Learning to script | Tutorials | Documentation | IE.AU3 | Games? | FreeSoftware | Path_Online | Core Language

Programming Tips

Excel Changes

ControlHover.UDF

GDI_Plus

Draw_On_Screen

GDI Basics

GDI_More_Basics

GDI Rotate

GDI Graph

GDI  CheckExistingItems

GDI Trajectory

Replace $ghGDIPDll with $__g_hGDIPDll

DLL 101?

Array via Object

GDI Swimlane

GDI Plus French 101 Site

GDI Examples UEZ

GDI Basic Clock

GDI Detection

Ternary operator

Share this post


Link to post
Share on other sites
nitekram

I came up with this: wondering if I can make it better?

 

#include <array.au3>
;#include <File.au3>

Local $aMain[6] = ['???|abc|downorflapping', _
        '???|abc|down', _
        '???|ccc|ccc', _
        '???|ddd|ddd', _
        '???|xyz|down', _
        '???|xyz|unresponsive']

; create and populate interim 2D array
Local $aAlertInfo[6][3]
For $1 = 0 To UBound($aMain) - 1
    $a10 = StringSplit($aMain[$1], '|')

    $aAlertInfo[$1][0] = $a10[2] ; alert
    $aAlertInfo[$1][1] = $a10[3] ; event
    $aAlertInfo[$1][2] = $a10[1] ; class
Next

_ArrayDisplay($aAlertInfo, 'all')

Local $aNewArray[2][3]
Local $icount = 0, $bPass = True
Local $RemoveWords = 'DownOrFlapping,UnResponsive'

For $x = 0 To UBound($aAlertInfo, 1) - 1
    For $y = 0 To UBound($aAlertInfo, 1) - 1
        If $aAlertInfo[$x][0] = $aAlertInfo[$y][0] And $aAlertInfo[$x][1] <> $aAlertInfo[$y][1] Then
            If StringInStr($RemoveWords, $aAlertInfo[$x][1]) And $aAlertInfo[$x][1] <> 'Down' Then
                $bPass = False
            Else
                $bPass = True
            EndIf
            If Not $bPass Then ContinueLoop
            ;
            If _ArraySearch($aNewArray, $aAlertInfo[$x][0], 0, 0, 0, 0, 1, 1) = -1 Then

                If UBound($aNewArray, 1) > 0 And UBound($aNewArray, 1) <= 2 Then
                    ConsoleWrite('... ' & $icount & '*' & UBound($aNewArray, 1) & @CRLF)
                    ;ConsoleWrite('!> ADD ' & @CRLF)
                    ConsoleWrite(UBound($aNewArray, 1) & @CRLF)
                    $aNewArray[$icount][0] = $aAlertInfo[$x][2] ;class
                    $aNewArray[$icount][1] = $aAlertInfo[$x][0] ;alert
                    $aNewArray[$icount][2] = $aAlertInfo[$x][1] ;event
                    $icount += 1
                    $bPass = False
                EndIf
            EndIf

        ElseIf $aAlertInfo[$y][0] = $aAlertInfo[$x][0] And $aAlertInfo[$y][1] = $aAlertInfo[$x][1] _
                And _ArraySearch($aNewArray, $aAlertInfo[$x][0], 0, 0, 0, 0, 1, 1) = -1 _
                And _ArraySearch($aNewArray, $aAlertInfo[$y][0], 0, 0, 0, 0, 1, 1) = -1 Then

            If StringInStr($RemoveWords, $aAlertInfo[$x][1]) And $aAlertInfo[$x][1] <> 'Down' Then
                $bPass = False
            Else
                $bPass = True
            EndIf
            If Not $bPass Then ContinueLoop
            ;
            $icount += 1
            ReDim $aNewArray[$icount][3]
            ;ConsoleWrite('... ' & $icount & @CRLF)
            ;ConsoleWrite('!> ADD ' & @CRLF)
            $aNewArray[$icount - 1][0] = $aAlertInfo[$x][2]
            $aNewArray[$icount - 1][1] = $aAlertInfo[$x][0] ; need the minus 1 to account for the ZERO index
            $aNewArray[$icount - 1][2] = $aAlertInfo[$x][1]
            $bPass = False

        EndIf
    Next
Next

_ArrayDisplay($aNewArray, 'Unique Alerts')

;_FileWriteFromArray('!testing.txt', $aNewArray)
Edited by nitekram

All by me:

"Sometimes you have to go back to where you started, to get to where you want to go." 

"Everybody catches up with everyone, eventually" 

"As you teach others, you are really teaching yourself."

From my dad

"Do not worry about yesterday, as the only thing that you can control is tomorrow."

 

WindowsError.gif

WIKI | Tabs; | Arrays; | Strings | Wiki Arrays | How to ask a Question | Forum Search | FAQ | Tutorials | Original FAQ | ONLINE HELP | UDF's Wiki | AutoIt PDF

AutoIt Snippets | Multple Guis | Interrupting a running function | Another Send

StringRegExp | StringRegExp Help | RegEXTester | REG TUTOR | Reg TUTOT 2

AutoItSetOption | Macros | AutoIt Snippets | Wrapper | Autoit  Docs

SCITE | SciteJump | BB | MyTopics | Programming | UDFs | AutoIt 123 | UDFs Form | UDF

Learning to script | Tutorials | Documentation | IE.AU3 | Games? | FreeSoftware | Path_Online | Core Language

Programming Tips

Excel Changes

ControlHover.UDF

GDI_Plus

Draw_On_Screen

GDI Basics

GDI_More_Basics

GDI Rotate

GDI Graph

GDI  CheckExistingItems

GDI Trajectory

Replace $ghGDIPDll with $__g_hGDIPDll

DLL 101?

Array via Object

GDI Swimlane

GDI Plus French 101 Site

GDI Examples UEZ

GDI Basic Clock

GDI Detection

Ternary operator

Share this post


Link to post
Share on other sites
mikell

Assuming that 'downorflapping' and 'unresponsive' come after 'down' if sorted, maybe this can do the work, sort of

#include <array.au3>
;#include <File.au3>

Local $aMain[6] = ['???|abc|downorflapping', _
        '???|abc|down', _
        '???|ccc|ccc', _
        '???|ddd|ddd', _
        '???|xyz|down', _
        '???|xyz|unresponsive']

;_ArrayDisplay($aMain)

_ArraySort($aMain)
;_ArrayDisplay($aMain)

For $i = Ubound($aMain)-1 to 1 step -1
  $current = StringRegExpReplace($aMain[$i], '.+?\|(.*?)\|.+', "$1")
  $prev = StringRegExpReplace($aMain[$i-1], '.+?\|(.*?)\|.+', "$1")
  If $current = $prev Then _ArrayDelete($aMain, $i)
Next
_ArrayDisplay($aMain)
Edited by mikell

Share this post


Link to post
Share on other sites
nitekram

That works as long as I change my array to have the second element first and the first element last - not a big deal to change. I did not think the first element would be a problem (stupid me for thinking that), so I chose not to post, but here would be an example:

Local $aMain[6] = ['host|abc|downorflapping', _
        'port|xyz|unresponsive', _
        'host|abc|down', _
        'router|ccc|ccc', _
        'switch|ddd|ddd', _
        'TrunkCable|xyz|down']
I do have a question though, as I understand most of the code. But I am lost when I see REGEXP, the things you guys put in there make me feel like I am reading Greek. I always get lost in those. Can you dumb it down for the none Greek readers?

All by me:

"Sometimes you have to go back to where you started, to get to where you want to go." 

"Everybody catches up with everyone, eventually" 

"As you teach others, you are really teaching yourself."

From my dad

"Do not worry about yesterday, as the only thing that you can control is tomorrow."

 

WindowsError.gif

WIKI | Tabs; | Arrays; | Strings | Wiki Arrays | How to ask a Question | Forum Search | FAQ | Tutorials | Original FAQ | ONLINE HELP | UDF's Wiki | AutoIt PDF

AutoIt Snippets | Multple Guis | Interrupting a running function | Another Send

StringRegExp | StringRegExp Help | RegEXTester | REG TUTOR | Reg TUTOT 2

AutoItSetOption | Macros | AutoIt Snippets | Wrapper | Autoit  Docs

SCITE | SciteJump | BB | MyTopics | Programming | UDFs | AutoIt 123 | UDFs Form | UDF

Learning to script | Tutorials | Documentation | IE.AU3 | Games? | FreeSoftware | Path_Online | Core Language

Programming Tips

Excel Changes

ControlHover.UDF

GDI_Plus

Draw_On_Screen

GDI Basics

GDI_More_Basics

GDI Rotate

GDI Graph

GDI  CheckExistingItems

GDI Trajectory

Replace $ghGDIPDll with $__g_hGDIPDll

DLL 101?

Array via Object

GDI Swimlane

GDI Plus French 101 Site

GDI Examples UEZ

GDI Basic Clock

GDI Detection

Ternary operator

Share this post


Link to post
Share on other sites
UEZ

That works as long as I change my array to have the second element first and the first element last - not a big deal to change. I did not think the first element would be a problem (stupid me for thinking that), so I chose not to post, but here would be an example:

 

Local $aMain[6] = ['host|abc|downorflapping', _
        'port|xyz|unresponsive', _
        'host|abc|down', _
        'router|ccc|ccc', _
        'switch|ddd|ddd', _
        'TrunkCable|xyz|down']
I do have a question though, as I understand most of the code. But I am lost when I see REGEXP, the things you guys put in there make me feel like I am reading Greek. I always get lost in those. Can you dumb it down for the none Greek readers?

 

 

Can you give an example how the result should look like?

Br,

UEZ


Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Share this post


Link to post
Share on other sites
mikell

So something like this then ?

#include <array.au3>

Local $aMain[6] = ['host|abc|downorflapping', _ 
        'port|xyz|unresponsive', _ 
        'host|abc|down', _ 
        'router|ccc|ccc', _ 
        'switch|ddd|ddd', _ 
        'TrunkCable|xyz|down']

; create and populate interim 2D array
Local $aAlertInfo[6][3]
For $1 = 0 To UBound($aMain) - 1
    $a10 = StringSplit($aMain[$1], '|')

    $aAlertInfo[$1][0] = $a10[2] ; alert
    $aAlertInfo[$1][1] = $a10[3] ; event
    $aAlertInfo[$1][2] = $a10[1] ; class
Next

_ArrayDisplay($aAlertInfo, 'all')
_ArraySort($aAlertInfo) 
_ArrayDisplay($aAlertInfo, 'sorted')

For $i = Ubound($aMain)-1 to 1 step -1
  $current = $aAlertInfo[$i][0] & $aAlertInfo[$i][2] 
  $prev = $aAlertInfo[$i-1][0] & $aAlertInfo[$i-1][2]
  If $current = $prev Then _ArrayDelete($aAlertInfo, $i)
Next
_ArrayDisplay($aAlertInfo)

Share this post


Link to post
Share on other sites
nitekram

The list should contain only 4 items, I am trying to remove the duplicates. I just came up with another condition - if only one is in the list it needs to be in the final array.

This is what I am looking for:

 host|abc|down
 router|ccc|ccc
 switch|ddd|ddd
 TrunkCable|xyz|down

But if the list were this:

 ['host|abc|downorflapping', _
        'port|xyz|unresponsive', _
        'router|ccc|ccc', _
        'switch|ddd|ddd', _
        'TrunkCable|xyz|down']

I would want my output to be: Notice how there is not a duplicate (index 2) for abc, so I would still want to pick that one up in my list as well. Meaning, sometimes the alert comes in just with 'downorflapping' and not another one for 'down'. I am still working on this, if anyone has an idea on how to proceed - that would be great.

host|abc|downorflapping
router|ccc|ccc
switch|ddd|ddd _
TrunkCable|xyz|down

All by me:

"Sometimes you have to go back to where you started, to get to where you want to go." 

"Everybody catches up with everyone, eventually" 

"As you teach others, you are really teaching yourself."

From my dad

"Do not worry about yesterday, as the only thing that you can control is tomorrow."

 

WindowsError.gif

WIKI | Tabs; | Arrays; | Strings | Wiki Arrays | How to ask a Question | Forum Search | FAQ | Tutorials | Original FAQ | ONLINE HELP | UDF's Wiki | AutoIt PDF

AutoIt Snippets | Multple Guis | Interrupting a running function | Another Send

StringRegExp | StringRegExp Help | RegEXTester | REG TUTOR | Reg TUTOT 2

AutoItSetOption | Macros | AutoIt Snippets | Wrapper | Autoit  Docs

SCITE | SciteJump | BB | MyTopics | Programming | UDFs | AutoIt 123 | UDFs Form | UDF

Learning to script | Tutorials | Documentation | IE.AU3 | Games? | FreeSoftware | Path_Online | Core Language

Programming Tips

Excel Changes

ControlHover.UDF

GDI_Plus

Draw_On_Screen

GDI Basics

GDI_More_Basics

GDI Rotate

GDI Graph

GDI  CheckExistingItems

GDI Trajectory

Replace $ghGDIPDll with $__g_hGDIPDll

DLL 101?

Array via Object

GDI Swimlane

GDI Plus French 101 Site

GDI Examples UEZ

GDI Basic Clock

GDI Detection

Ternary operator

Share this post


Link to post
Share on other sites
UEZ

Is mikell's version not working for you?

I got the same idea:

#include <Array.au3>
Global $aInput[6] = ['host|abc|downorflapping', _
                    'port|xyz|unresponsive', _
                    'host|abc|down', _
                    'router|ccc|ccc', _
                    'switch|ddd|ddd', _
                    'TrunkCable|xyz|down']
$aResult = MakeUnique($aInput)
_ArrayDisplay($aResult)

Func MakeUnique($aInput)
    Local $aWork[UBound($aInput)][3], $i, $x, $aTmp
    For $i = 0 To UBound($aInput) - 1 ;convert it to a 2d array
        $aTmp = StringSplit($aInput[$i], "|", 2)
        For $x = 0 To 2
            $aWork[$i][$x] = $aTmp[$x]
        Next
    Next
    _ArraySort($aWork, 0, 0, 0, 1) ;sort array at subitem 1 (hostnames)
    Local $iUB = UBound($aWork) - 1
    For $i = $iUB To 1 Step - 1 ;delete duplicates
        If $aWork[$i][1] = $aWork[$i - 1][1] Then
            _ArrayDelete($aWork, $i)
        EndIf
    Next
    Return $aWork
EndFunc 

Or a different approach:

#include <Array.au3>
Global $aInput[6] = ['host|abc|downorflapping', _
                    'port|xyz|unresponsive', _
                    'host|abc|down', _
                    'router|ccc|ccc', _
                    'switch|ddd|ddd', _
                    'TrunkCable|xyz|down']
                    
$aResult = MakeUnique($aInput)
_ArrayDisplay($aResult)

Func MakeUnique($aInput)
    Local $sInput = _ArrayToString($aInput, @CRLF)
    Local $aUnique = $aInput, $aTmp, $i, $j, $y
    For $i = 0 To UBound($aInput) - 1
        $aTmp = StringRegExp($sInput, "(.*\|" & StringRegExpReplace($aInput[$i], ".*\|(.*)\|.*", "$1") & "\|.*)", 3)
        If (UBound($aTmp) - 1) > 0 Then
            For $j = 1 To UBound($aTmp) - 1
                For $y = UBound($aUnique) - 1 To 0 Step - 1
                    If $aUnique[$y] = StringReplace(StringStripCR($aTmp[$j]), @LF, "") Then _ArrayDelete($aUnique, $y)
                Next
            Next
        EndIf
    Next
    Return $aUnique
EndFunc

Br,
UEZ

Edited by UEZ

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Share this post


Link to post
Share on other sites
nitekram

The version you posted (mike's) seems to work - this does not - posted. Have not had time to look at code...will have time tomorrow, the one you posted, gives me the opposite of what I am looking for, and since I have no idea about REGEX function, it would take me some time to change/fix

#include <array.au3>

Local $aMain[6] = ['host|abc|downorflapping', _
        'port|xyz|unresponsive', _
        'host|abc|down', _
        'router|ccc|ccc', _
        'switch|ddd|ddd', _
        'TrunkCable|xyz|down']

; create and populate interim 2D array
Local $aAlertInfo[6][3]
For $1 = 0 To UBound($aMain) - 1
    $a10 = StringSplit($aMain[$1], '|')

    $aAlertInfo[$1][0] = $a10[2] ; alert
    $aAlertInfo[$1][1] = $a10[3] ; event
    $aAlertInfo[$1][2] = $a10[1] ; class
Next

_ArrayDisplay($aAlertInfo, 'all')
_ArraySort($aAlertInfo)
_ArrayDisplay($aAlertInfo, 'sorted')

For $i = Ubound($aMain)-1 to 1 step -1
  $current = $aAlertInfo[$i][0] & $aAlertInfo[$i][2]
  $prev = $aAlertInfo[$i-1][0] & $aAlertInfo[$i-1][2]
  If $current = $prev Then _ArrayDelete($aAlertInfo, $i)
Next
_ArrayDisplay($aAlertInfo)

Thanks for everyones help

EDIT - I should have said, yours that you posted with the same idea, worked, and appears to be the best...I am looking on how to make sure that the more sever of the two alerts hits, as Down, is a lot more sever then downorflapping, but again will have to work on it tomorrow, thanks again

Edited by nitekram

All by me:

"Sometimes you have to go back to where you started, to get to where you want to go." 

"Everybody catches up with everyone, eventually" 

"As you teach others, you are really teaching yourself."

From my dad

"Do not worry about yesterday, as the only thing that you can control is tomorrow."

 

WindowsError.gif

WIKI | Tabs; | Arrays; | Strings | Wiki Arrays | How to ask a Question | Forum Search | FAQ | Tutorials | Original FAQ | ONLINE HELP | UDF's Wiki | AutoIt PDF

AutoIt Snippets | Multple Guis | Interrupting a running function | Another Send

StringRegExp | StringRegExp Help | RegEXTester | REG TUTOR | Reg TUTOT 2

AutoItSetOption | Macros | AutoIt Snippets | Wrapper | Autoit  Docs

SCITE | SciteJump | BB | MyTopics | Programming | UDFs | AutoIt 123 | UDFs Form | UDF

Learning to script | Tutorials | Documentation | IE.AU3 | Games? | FreeSoftware | Path_Online | Core Language

Programming Tips

Excel Changes

ControlHover.UDF

GDI_Plus

Draw_On_Screen

GDI Basics

GDI_More_Basics

GDI Rotate

GDI Graph

GDI  CheckExistingItems

GDI Trajectory

Replace $ghGDIPDll with $__g_hGDIPDll

DLL 101?

Array via Object

GDI Swimlane

GDI Plus French 101 Site

GDI Examples UEZ

GDI Basic Clock

GDI Detection

Ternary operator

Share this post


Link to post
Share on other sites

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
Sign in to follow this  

  • Similar Content

    • VollachR
      By VollachR
      Hi,
      I'm looking for a way to take a number value from a Row2 of a 2D array and according to this check if files that appear in rows 3-11 in the array exists.
      For example, if the number in Row2 is 5 I need to check for the files in Row 3-6 only, if it is 6 than rows 3-7 and so on.
      I thought on using a FOR loop but I have very little experience with those.
      Can you suggest the best way to do what I need?
      BTW, the files in Rows 3-11 will usually have blank value for any row above the number in Row2 (e.g. Row2 = 5 so Rows3-6 will have values but 8-11 be empty), The values I need are in Column 1 of the array, the name of the key from the INI file that the array was created from is in Column 0.
      Full Example:
      Row2 of Array:
      Col0 = Games# - Col1 = 5
      Rows3-6
      Col0 = Exe2 - Col1 = Path To File
      Col0 = Exe3 - Col1 = Path To File
      Col0 = Exe4 - Col1 = Path To File
      Col0 = Exe5 - Col1 = Path To File
      I need that if Row2 is 5 to check these above for rows if the file exists, if it was 6 then the next row as well and so on up until number 10 in Row2 as it can't go above 10.
      So basically for whatever number in Row2 from 2-10 need to check 1-9 rows from 3-11 to see if the files in Col1 exists and if any of them don't exist it should call a function that shows an error message.
      I'm pretty sure I have the first line of the for look correct:
      For $i = 1 To $aAIO[2][1] Just not sure how to continue from there, also not sure if $i should be equal 1 or 2.
      Help will be appreciated.
    • FMS
      By FMS
      Hello,
      I'm trying to get data from twitter to an array and so far I found an Twitter UDF whish lookes very intresting but couldn't get it to work.
      It lookes not supported any more(2010) and buggy when i read all te replies.
      More around this subject (autoit and twitter) i couldn't find on this forum.
      Is there sombody who know's a good way to get live data from twitter to an array inside autoit?
      (I kinda doubt that this isn't tackled before)
      In the end I was hoping to get all tweets from date to date from an specific subject inside a 2D array to work whit.
    • AndreasNWWWWW
      By AndreasNWWWWW
      I got a question:  i am trying to run different functions based upon what i select in these radio buttons.(code below)
      it needs to check server 1. then run function 1 or function 2 after what i selected in the checkbox.
      once that function is done it moves to the next one, until it has been trough all 5 
       
      iv'e tried using while loops with different while $i equals to something but then i manualy need to go in and edit the script every time.
      #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("Form1", 615, 437, 192, 124) $Server2 = GUICtrlCreateLabel("Server2", 216, 95, 41, 17) $server1 = GUICtrlCreateLabel("Server1", 216, 72, 41, 17) $server4 = GUICtrlCreateLabel("Server4", 216, 144, 41, 17) $server3 = GUICtrlCreateLabel("Server3", 216, 119, 41, 17) $server5 = GUICtrlCreateLabel("Server5", 216, 170, 41, 17) $Start = GUICtrlCreateButton("Start", 240, 248, 147, 25) $Checkbox1 = GUICtrlCreateCheckbox("function1", 288, 72, 97, 17) $Checkbox2 = GUICtrlCreateCheckbox("function2", 392, 72, 97, 17) $Checkbox3 = GUICtrlCreateCheckbox("function1", 288, 96, 97, 17) $Checkbox4 = GUICtrlCreateCheckbox("function2", 392, 96, 97, 17) $Checkbox5 = GUICtrlCreateCheckbox("function1", 288, 120, 97, 17) $Checkbox6 = GUICtrlCreateCheckbox("function2", 392, 120, 97, 17) $Checkbox7 = GUICtrlCreateCheckbox("function1", 288, 144, 97, 17) $Checkbox8 = GUICtrlCreateCheckbox("function2", 392, 144, 97, 17) $Checkbox9 = GUICtrlCreateCheckbox("function1", 288, 170, 97, 17) $Checkbox10 = GUICtrlCreateCheckbox("function2", 392, 170, 97, 17) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd  
    • 31290
      By 31290
      Hi everyone, 
      I'm currently writing a script that allow me to list all currently installed software on a computer but some of the are listed in the HKLM64 hive of the registry whereas 95% of all others are in the HKLM "normal" one.
      Thing is, I'd like to combine these two reg key into one single ListView item.
      Here's my code so far, knowing that it's working on both cases (changing to HKLM64 or HKLM short)
      Thanks in advance for the help
      -31290-
    • Iceburg
      By Iceburg
      Hi everyone, I'm at best a noobie.  I have read through the Array helps, and specifically the 2D array help file, and I'm struggling to get my code working.
      I have an array that is read from a file, thats working great.  I'm trying to do some math on the array, so I can find the largest, average, lowest, day over day change %, etc.
      The array read working fine, I get 43 lines, line 0 is 44, and then I get data that looks like
      0519 $10,000
      0520 $10,001
      0521 $10,002
      The data in this array is a single 1D array, breaking it out into 2 columns so I can do the math is what I can get to happen.  
      How do I reference the array to store this data?  Second, how do I assign this data to the appropriate row/column?
      Thanks in advance.
      Dim $all_cash_amounts[UBound($aInput)][2] Dim $max_amount_in_account Dim $min_amount_in_account _FileReadToArray($LC_Check_file_path, $aInput) _ArrayDisplay($aInput) local $date = StringRegExp($aInput[1], "(\d\d\d\d)", 1) local $cash = StringRegExp($aInput[1], "\d+\s(-?[0-9\.\,]+)", 1) ConsoleWrite("Date is: " & $date & @CRLF) For $i = 1 To UBound($aInput)-1     $date = StringRegExp($aInput[$i], "(\d\d\d\d)", 1)     $all_cash_amounts[$i][2] = $date[$i][0], $cash[$i][1]      Next _ArrayDisplay($all_cash_amounts)  
×