Jump to content

Second press on button won't go to for loop


Recommended Posts

Hi guys

 

this is my first topic and i hope that i posted in the correct section

i have a text file like below with somewhere 3000-4000 lines

aaa = bbb
ccc = ddd

i made an input and a button

when i input aaa i want to show bbb

when i input ccc i want to show ddd

and so on

i created a script and if i input aaa and press once it shows bbb. But after that if i input ccc and press the second time i will get nothing

#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <guiconstants.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GuiComboBox.au3>
#include <File.au3>
#include <Array.au3>
#include <GuiEdit.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIShPath.au3>
#include <INet.au3>
#include <Constants.au3>
#include <EditConstants.au3>
#include <StaticConstants.au3>
#include <Inet.au3>
#include <Misc.au3>
#include <WinAPIDiag.au3>


Opt("GUIOnEventMode", 1)

Global $handleGUI = GUICreate("gui", 1250, 900)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
GUISetBkColor(0xFFFFFF)




Local $idMenu1 = GUICtrlCreateMenu("Menu")

Local $idMenu3 = GUICtrlCreateMenu("About")



GUICtrlCreateGroup("Option Checker", 960, 20, 220, 200)
GUICtrlSetFont(-1, 11, 500)
Global $inputfa = GUICtrlCreateInput("aaa", 970, 59, 85, 28) ;input FA
GUICtrlSetFont(-1, 12, 700)
Global $statusfa = GUICtrlCreateLabel("", 970, 100, 80, 28) ; Valid
GUICtrlSetColor(-1, 0x00FF00) ; Green;
GUICtrlSetFont(-1, 12, 700) ; Bold
Global $fadescription = GUICtrlCreateLabel("", 970, 120, 300, 38)
GUICtrlSetFont(-1, 11, 700) ; Bold
;GUICtrlSetFont(-1, 11, 700)

Global $checkfa = GUICtrlCreateButton("Check FA", 1070, 59, 95, 30)
GUICtrlSetFont(-1, 11, 500)
;GUICtrlSetOnEvent(-1, "checkfagui")
GUICtrlSetOnEvent(-1, "checkfa")


Global $FaPath = @ScriptDir & "\test.txt"
Global $FaFileOpen = FileOpen(@ScriptDir & "\test.txt", 0)
Global $FaFileRead = FileReadLine($FaFileOpen, 1)
GUISetState()

While 1
    Sleep(20000)
WEnd



Func checkfa()


    $readinputfa = GUICtrlRead($inputfa)
    GUICtrlSetState($checkfa, $GUI_HIDE)
    Global $loadingfa = GUICtrlCreateButton("Loading", 1070, 59, 95, 30)
    GUICtrlSetFont(-1, 11, 500)


    If $FaFileOpen = -1 Then

        MsgBox(0, "File is missing!", "")
    EndIf

    $i = 0

    For $i = 1 To _FileCountLines($FaFileOpen)

        Local $line = FileReadLine($FaPath, $i)
        Local $faoption = StringMid($line, 1, 3)
        Local $fadescriptionline = StringMid($line, 7, 30)


        If $readinputfa = $faoption Then

            GUICtrlSetData($statusfa, "Valid!")
            GUICtrlSetColor(-1, 0x00FF00) ; Green;
            GUICtrlSetFont(-1, 12, 700) ; Bold
            GUICtrlSetData($fadescription, $fadescriptionline)
            GUICtrlSetState($loadingfa, $GUI_HIDE)
            GUICtrlSetState($checkfa, $GUI_SHOW)

            FileClose($FaFileOpen)

            ExitLoop

        EndIf

    Next

EndFunc   ;==>checkfa

Func _Exit()
    Exit
EndFunc   ;==>_Exit

 

word_finder.txt

Edited by Jos
Simply add source in codebox <>
Link to post
Share on other sites

Welcome to the forums. From what I can see, you open the file at the beginning of your script and then close it in the fucntion checkfa. After that, you won't be able to read from the file.

If the file contents aren't constantly changing, then you can avoid this issue by reading the file contents into an array and then performing your search against the array.

Link to post
Share on other sites

@dragosv6 i would recommend these naming variable practices: $iLineCount - the 'i' is for interger; $sFileName - 's'=string, $hFileOpen - h=handle, a=array, c=control ect... it's difficult to read your code the way it is.

7 hours ago, dragosv6 said:

i have a text file like below with somewhere 3000-4000 lines

aaa = bbb
ccc = ddd

i made an input and a button

when i input aaa i want to show bbb

when i input ccc i want to show ddd

are the list in test.txt file created by you or computer generated? either way, it is easier to use IniRead() but you need to add the 'section' tag to test.txt like this

[Animals Dictionary]
dog = Puppy
cat = Kitten

[Cars Dictionary]
tesla = Model S 3 X Y
truck = Cybertruck

[EN Dictionary]
aaa = a1
bbb = b1

try this

#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <guiconstants.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GuiComboBox.au3>
#include <File.au3>
#Include <Array.au3>
#include <GuiEdit.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIShPath.au3>
#include <INet.au3>
#include <Constants.au3>
#include <EditConstants.au3>
#include <StaticConstants.au3>
#include <Inet.au3>
#include <Misc.au3>
#include <WinAPIDiag.au3>


Opt("GUIOnEventMode", 1)

;~ HotKeySet('{ESC}', '_Exit')

Global $sFilePath = @ScriptDir & "\test.txt"

; GUI
Global $hGUI = GUICreate("My Dictionary", 1250, 900)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
GUISetBkColor(0xFFFFFF)

Local $idMenu1 = GUICtrlCreateMenu("Menu")
Local $idMenu3 = GUICtrlCreateMenu("About")

GUICtrlCreateGroup("Option Checker", 960, 20, 220, 200)
GUICtrlSetFont(-1, 11, 500)

Global $cUserLookUp = GUICtrlCreateInput("dog", 970, 59, 85, 28) ;input FA
GUICtrlSetFont(-1, 12, 700)
GUICtrlSetTip(-1, 'Enter term to search')

Global $cLookupStatus = GUICtrlCreateLabel("Status", 970, 100, 80, 28) ;display status label
;~ GUICtrlSetColor(-1, 0x00FF00) ; Green;
;~ GUICtrlSetFont(-1, 12, 700) ; Bold
GUICtrlSetTip(-1, 'Status')

Global $cLookupResult = GUICtrlCreateLabel("Result", 970, 120, 300, 38) ;display result found
GUICtrlSetFont(-1, 11, 700) ; Bold
;GUICtrlSetFont(-1, 11, 700)
GUICtrlSetTip(-1, 'Result')

Global $cBtnSearch = GUICtrlCreateButton("Find", 1070, 59, 95, 30) ;action
GUICtrlSetFont(-1, 11, 500)
;GUICtrlSetOnEvent(-1, "checkfagui")
GUICtrlSetOnEvent(-1, "_DictionaryFinder")

GUISetState()

; Loop until the user exits.
While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            ; Delete the previous GUIs and all controls.
            GUIDelete($hGUI)
            ExitLoop
            
    EndSwitch
WEnd


; -----------------------
; e.g dictionary format
; -----------------------
;~ [Animals Dictionary]
;~ dog = puppy
;~ dat = Kitten

;~ [Cars Dictionary]
;~ tesla = Model S 3 X Y
;~ truck = Cybertruck

;~ [EN Dictionary]
;~ aaa = a1
;~ bbb = b1

Func _DictionaryFinder()
    Local $sDictionaryType
    Local $sw = 1
    Switch $sw
        Case 1
          Local $sDictionaryType = "Animals Dictionary"
        Case 2
           Local $sDictionaryType = "Cars Dictionary"
        Case 3
           Local $sDictionaryType = "EN Dictionary"
    EndSwitch
    
    Local $sUserLookupTerm = GUICtrlRead($cUserLookUp)
    Local $sDefaultValue = "No Search Result Found"
    Local $sRead = IniRead($sFilePath, $sDictionaryType, $sUserLookupTerm, $sDefaultValue)
    
;~     If $sRead == $sDefaultValue Then
    If StringCompare($sRead, $sDefaultValue, $STR_NOCASESENSEBASIC) Then
          GUICtrlSetData($cLookupStatus,"SUCCESS")
          GUICtrlSetColor($cLookupStatus, 0x00FF00)         ; Green
          GUICtrlSetFont($cLookupStatus, 12, 700)           ; Bold
          
          GUICtrlSetData($cLookupResult, $sUserLookupTerm &' = '& $sRead)    ;set result
          
    Else
          GUICtrlSetData($cLookupStatus,"FAIL")
          GUICtrlSetColor($cLookupStatus, 0xff0000)         ; red
          GUICtrlSetFont($cLookupStatus, 12, 700)           ; Bold
          
          GUICtrlSetData($cLookupResult, $sUserLookupTerm &' = '& $sRead)    ;set result
    EndIf
EndFunc



; WARNING THERE ARE LOTS OF PROBLEMS IN THIS FUNCTION - no changes made yet
Func _DictionaryFinderXXX()
  Local $hFileOpen = FileOpen($sFilePath, $FO_READ)

  Local $sUserLookupTerm = GUICtrlRead($cUserLookUp)
  GUICtrlSetState($cBtnSearch, $GUI_HIDE)
  Global $loadingfa = GUICtrlCreateButton("Loading", 1070, 59, 95, 30)

  Dim $aDictionary
  If Not _FileReadToArray($sFilePath, $aDictionary) Then
      MsgBox(4096, "Error", " Error reading text file to Array error:" & @error)
      Exit
  EndIf
  _ArrayDisplay($aDictionary, "Debug: $aDictionary")

  ; Split lines into 2D array
  Dim $aSplittedLine[$aDictionary[0] + 1][2] = [["col1", "col2"]]
  ;MsgBox(0,"","" & $aDictionary[0] )

  For $x = 1 To $aDictionary[0]
      $aLookupWord = StringSplit($aDictionary[$x], "=")
      If $aLookupWord[0] = 2 Then
          $aSplittedLine[$x][0] = $aLookupWord[1]
          $aSplittedLine[$x][1] = $aLookupWord[2]
      EndIf

      If $sUserLookupTerm = $aSplittedLine[$x][0] Then

          GUICtrlSetData($cLookupStatus,"Valid!")
          GUICtrlSetColor(-1, 0x00FF00) ; Green;
          GUICtrlSetFont(-1, 12, 700) ; Bold
          
          GUICtrlSetData($cLookupResult,$aSplittedLine[$x][1])
          GUICtrlSetState($loadingfa, $GUI_HIDE)
          GUICtrlSetState($cBtnSearch, $GUI_SHOW)

      EndIf
  Next
  _ArrayDisplay($aSplittedLine, "Debug: $aSplittedLine")
EndFunc

Func _Exit()
    Exit
EndFunc   ;==>_Exit

 

 

Link to post
Share on other sites

The textfile contains following line:

aaa = bbb

when you are using the string split method, the aaa has a space after it, so the array gets the "aaa " as a string, which does not match the aaa search.

this should work:

#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <guiconstants.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GuiComboBox.au3>
#include <File.au3>
#include <Array.au3>
#include <GuiEdit.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIShPath.au3>
#include <INet.au3>
#include <Constants.au3>
#include <EditConstants.au3>
#include <StaticConstants.au3>
#include <Inet.au3>
#include <Misc.au3>
#include <WinAPIDiag.au3>


Opt("GUIOnEventMode", 1)

Global $handleGUI = GUICreate("gui", 1250, 900)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
GUISetBkColor(0xFFFFFF)




Local $idMenu1 = GUICtrlCreateMenu("Menu")

Local $idMenu3 = GUICtrlCreateMenu("About")



GUICtrlCreateGroup("Option Checker", 960, 20, 220, 200)
GUICtrlSetFont(-1, 11, 500)
Global $inputfa = GUICtrlCreateInput("aaa", 970, 59, 85, 28) ;input FA
GUICtrlSetFont(-1, 12, 700)
Global $statusfa = GUICtrlCreateLabel("", 970, 100, 80, 28) ; Valid
GUICtrlSetColor(-1, 0x00FF00) ; Green;
GUICtrlSetFont(-1, 12, 700) ; Bold
Global $fadescription = GUICtrlCreateLabel("", 970, 120, 300, 38)
GUICtrlSetFont(-1, 11, 700) ; Bold
;GUICtrlSetFont(-1, 11, 700)

Global $checkfa = GUICtrlCreateButton("Check FA", 1070, 59, 95, 30)
GUICtrlSetFont(-1, 11, 500)
;GUICtrlSetOnEvent(-1, "checkfagui")
GUICtrlSetOnEvent(-1, "Check")


Global $sFile = @ScriptDir & "\test.txt"
Global $FaFileOpen = FileOpen(@ScriptDir & "\test.txt", 0)

;Global $FaFileRead = FileReadLine($FaFileOpen, 1)




GUISetState()





While 1
    Sleep(20000)
WEnd






Func Check()

    $readinputfa = GUICtrlRead($inputfa)

    GUICtrlSetState($checkfa, $GUI_HIDE)
    Global $loadingfa = GUICtrlCreateButton("Loading", 1070, 59, 95, 30)

    Dim $text
    If Not _FileReadToArray($sFile, $text) Then
        MsgBox(4096, "Error", " Error reading text file to Array error:" & @error)
        Exit
    EndIf
    ;_ArrayDisplay($text, "Debug: $text")

    ; Split lines into 2D array
    Dim $avIPs[$text[0] + 1][2] = [["col1", "col2"]]

    ;MsgBox(0,"","" & $text[0] )


    For $x = 1 To $text[0]
        $array = StringSplit($text[$x], "=")


        If $array[0] = 2 Then
            $avIPs[$x][0] = StringStripWs($array[1],3)
            $avIPs[$x][1] = StringStripWs($array[2],3)
        EndIf

            ConsoleWrite ( $x & ": " & chr(34) & $readinputfa &chr(34) & " = " &chr(34) & $avIPs[$x][0] &chr(34) & @crlf)
        If $readinputfa = $avIPs[$x][0] Then
            ConsoleWrite ("found" & $avIPs[$x][1] & @crlf)
            GUICtrlSetData($statusfa, "Valid!")
            GUICtrlSetColor(-1, 0x00FF00) ; Green;
            GUICtrlSetFont(-1, 12, 700) ; Bold
            GUICtrlSetData($fadescription, $avIPs[$x][1])


        EndIf
    Next
    ;_ArrayDisplay($avIPs, "Debug: $avIPs")

    GUICtrlSetState($loadingfa, $GUI_HIDE)
    GUICtrlSetState($checkfa, $GUI_SHOW)


EndFunc   ;==>Check


Func _Exit()
    FileClose($FaFileOpen)
    Exit
EndFunc   ;==>_Exit
Edited by Dan_555
Link to post
Share on other sites
19 minutes ago, Dan_555 said:

The textfile contains following line:

aaa = bbb

when you are using the string split method, the aaa has a space after it, so the array gets the "aaa " as a string, which does not match the aaa search.

this should work:

#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <guiconstants.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GuiComboBox.au3>
#include <File.au3>
#include <Array.au3>
#include <GuiEdit.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIShPath.au3>
#include <INet.au3>
#include <Constants.au3>
#include <EditConstants.au3>
#include <StaticConstants.au3>
#include <Inet.au3>
#include <Misc.au3>
#include <WinAPIDiag.au3>


Opt("GUIOnEventMode", 1)

Global $handleGUI = GUICreate("gui", 1250, 900)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
GUISetBkColor(0xFFFFFF)




Local $idMenu1 = GUICtrlCreateMenu("Menu")

Local $idMenu3 = GUICtrlCreateMenu("About")



GUICtrlCreateGroup("Option Checker", 960, 20, 220, 200)
GUICtrlSetFont(-1, 11, 500)
Global $inputfa = GUICtrlCreateInput("aaa", 970, 59, 85, 28) ;input FA
GUICtrlSetFont(-1, 12, 700)
Global $statusfa = GUICtrlCreateLabel("", 970, 100, 80, 28) ; Valid
GUICtrlSetColor(-1, 0x00FF00) ; Green;
GUICtrlSetFont(-1, 12, 700) ; Bold
Global $fadescription = GUICtrlCreateLabel("", 970, 120, 300, 38)
GUICtrlSetFont(-1, 11, 700) ; Bold
;GUICtrlSetFont(-1, 11, 700)

Global $checkfa = GUICtrlCreateButton("Check FA", 1070, 59, 95, 30)
GUICtrlSetFont(-1, 11, 500)
;GUICtrlSetOnEvent(-1, "checkfagui")
GUICtrlSetOnEvent(-1, "Check")


Global $sFile = @ScriptDir & "\test.txt"
Global $FaFileOpen = FileOpen(@ScriptDir & "\test.txt", 0)

;Global $FaFileRead = FileReadLine($FaFileOpen, 1)




GUISetState()





While 1
    Sleep(20000)
WEnd






Func Check()

    $readinputfa = GUICtrlRead($inputfa)

    GUICtrlSetState($checkfa, $GUI_HIDE)
    Global $loadingfa = GUICtrlCreateButton("Loading", 1070, 59, 95, 30)

    Dim $text
    If Not _FileReadToArray($sFile, $text) Then
        MsgBox(4096, "Error", " Error reading text file to Array error:" & @error)
        Exit
    EndIf
    ;_ArrayDisplay($text, "Debug: $text")

    ; Split lines into 2D array
    Dim $avIPs[$text[0] + 1][2] = [["col1", "col2"]]

    ;MsgBox(0,"","" & $text[0] )


    For $x = 1 To $text[0]
        $array = StringSplit($text[$x], "=")


        If $array[0] = 2 Then
            $avIPs[$x][0] = StringStripWs($array[1],3)
            $avIPs[$x][1] = StringStripWs($array[2],3)
        EndIf

            ConsoleWrite ( $x & ": " & chr(34) & $readinputfa &chr(34) & " = " &chr(34) & $avIPs[$x][0] &chr(34) & @crlf)
        If $readinputfa = $avIPs[$x][0] Then
            ConsoleWrite ("found" & $avIPs[$x][1] & @crlf)
            GUICtrlSetData($statusfa, "Valid!")
            GUICtrlSetColor(-1, 0x00FF00) ; Green;
            GUICtrlSetFont(-1, 12, 700) ; Bold
            GUICtrlSetData($fadescription, $avIPs[$x][1])


        EndIf
    Next
    ;_ArrayDisplay($avIPs, "Debug: $avIPs")

    GUICtrlSetState($loadingfa, $GUI_HIDE)
    GUICtrlSetState($checkfa, $GUI_SHOW)


EndFunc   ;==>Check


Func _Exit()
    FileClose($FaFileOpen)
    Exit
EndFunc   ;==>_Exit

Dan one more question

 

if i want to insert a Else where to put it?

i tried to insert it here:

 If $readinputfa = $avIPs[$x][0] Then
            ConsoleWrite ("found" & $avIPs[$x][1] & @crlf)
            GUICtrlSetData($statusfa, "Valid!")
            GUICtrlSetColor(-1, 0x00FF00) ; Green;
            GUICtrlSetFont(-1, 12, 700) ; Bold
            GUICtrlSetData($fadescription, $avIPs[$x][1])

Else

    GUICtrlSetData($statusfa, "Invalid!")
            GUICtrlSetColor(-1, 0xFFFFFF) ; Green;
            GUICtrlSetFont(-1, 12, 700) ; Bold
            ;GUICtrlSetData($fadescription, $avIPs[$x][1])

 

        EndIf

but it sais invalid all the time.

Link to post
Share on other sites
4 minutes ago, Dan_555 said:

Put an exitloop command just before the else

nop same

 

For $x = 1 To $text[0]
        $array = StringSplit($text[$x], "=")


        If $array[0] = 2 Then
            $avIPs[$x][0] = StringStripWs($array[1],3)
            $avIPs[$x][1] = StringStripWs($array[2],3)
        EndIf

            ;ConsoleWrite ( $x & ": " & chr(34) & $readinputfa &chr(34) & " = " &chr(34) & $avIPs[$x][0] &chr(34) & @crlf)
        If $readinputfa = $avIPs[$x][0] Then
            ConsoleWrite ("found:"& $avIPs[$x][0] & " = " & $avIPs[$x][1] & @crlf)
            GUICtrlSetData($statusfa, "Valid!")
            GUICtrlSetColor(-1, 0x00FF00) ; Green;
            GUICtrlSetFont(-1, 12, 700) ; Bold
            GUICtrlSetData($fadescription, $avIPs[$x][1])

ExitLoop

Else
;ConsoleWrite ("notfound" & $avIPs[$x][1] & @crlf)
    GUICtrlSetData($statusfa, "Invalid!")
            GUICtrlSetColor(-1, 0xFFFFFF) ; Green;
            GUICtrlSetFont(-1, 12, 700) ; Bold
            ;GUICtrlSetData($fadescription, $avIPs[$x][1])


        EndIf
    Next

Link to post
Share on other sites
10 minutes ago, dragosv6 said:

but it sais invalid all the time.

here is something to think about: although your original method works and because you have a large text file it takes longer than it is supposed to to search. because your file is formatted the way it it, take advantage the IniRead() which is much more efficient. _ArraySearch() is an alternative suggested after _FileReadToArray(). I dont' see why you need to re-invent the wheel. Also do take into account case sensitive check as well

6 minutes ago, Dan_555 said:

Put an exitloop command just before the else

Exitloop is for while loop, ContinueLoop is for for loop

Link to post
Share on other sites

Then do it in this way:

#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <guiconstants.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GuiComboBox.au3>
#include <File.au3>
#include <Array.au3>
#include <GuiEdit.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIShPath.au3>
#include <INet.au3>
#include <Constants.au3>
#include <EditConstants.au3>
#include <StaticConstants.au3>
#include <Inet.au3>
#include <Misc.au3>
#include <WinAPIDiag.au3>


Opt("GUIOnEventMode", 1)

Global $handleGUI = GUICreate("gui", 1250, 900)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
GUISetBkColor(0xFFFFFF)




Local $idMenu1 = GUICtrlCreateMenu("Menu")

Local $idMenu3 = GUICtrlCreateMenu("About")



GUICtrlCreateGroup("Option Checker", 960, 20, 220, 200)
GUICtrlSetFont(-1, 11, 500)
Global $inputfa = GUICtrlCreateInput("aaa", 970, 59, 85, 28) ;input FA
GUICtrlSetFont(-1, 12, 700)
Global $statusfa = GUICtrlCreateLabel("", 970, 100, 80, 28) ; Valid
GUICtrlSetColor(-1, 0x00FF00) ; Green;
GUICtrlSetFont(-1, 12, 700) ; Bold
Global $fadescription = GUICtrlCreateLabel("", 970, 120, 300, 38)
GUICtrlSetFont(-1, 11, 700) ; Bold
;GUICtrlSetFont(-1, 11, 700)

Global $checkfa = GUICtrlCreateButton("Check FA", 1070, 59, 95, 30)
GUICtrlSetFont(-1, 11, 500)
;GUICtrlSetOnEvent(-1, "checkfagui")
GUICtrlSetOnEvent(-1, "Check")


Global $sFile = @ScriptDir & "\test.txt"
Global $FaFileOpen = FileOpen(@ScriptDir & "\test.txt", 0)

;Global $FaFileRead = FileReadLine($FaFileOpen, 1)




GUISetState()





While 1
    Sleep(20000)
WEnd






Func Check()
    local $found=-1
    $readinputfa = GUICtrlRead($inputfa)

    GUICtrlSetState($checkfa, $GUI_HIDE)
    Global $loadingfa = GUICtrlCreateButton("Loading", 1070, 59, 95, 30)

    Dim $text
    If Not _FileReadToArray($sFile, $text) Then
        MsgBox(4096, "Error", " Error reading text file to Array error:" & @error)
        Exit
    EndIf
    ;_ArrayDisplay($text, "Debug: $text")

    ; Split lines into 2D array
    Dim $avIPs[$text[0] + 1][2] = [["col1", "col2"]]

    ;MsgBox(0,"","" & $text[0] )


    For $x = 1 To $text[0]
        $array = StringSplit($text[$x], "=")


        If $array[0] = 2 Then
            $avIPs[$x][0] = StringStripWS($array[1], 3)
            $avIPs[$x][1] = StringStripWS($array[2], 3)
        EndIf

        ConsoleWrite($x & ": " & Chr(34) & $readinputfa & Chr(34) & " = " & Chr(34) & $avIPs[$x][0] & Chr(34) & @CRLF)
        If $readinputfa = $avIPs[$x][0] Then
            ConsoleWrite("found" & $avIPs[$x][1] & @CRLF)
            $found=$x
            ExitLoop
        EndIf
    Next
    ;_ArrayDisplay($avIPs, "Debug: $avIPs")

if $found>-1 then
            GUICtrlSetData($statusfa, "Valid!")
            GUICtrlSetColor(-1, 0x00FF00) ; Green;
            GUICtrlSetFont(-1, 12, 700) ; Bold
            GUICtrlSetData($fadescription, $avIPs[$found][1])
Else
                ;ConsoleWrite ("notfound" & $avIPs[$x][1] & @crlf)
            GUICtrlSetData($statusfa, "Invalid!")
            GUICtrlSetColor(-1, 0xFFFFFF) ; Green;
            GUICtrlSetFont(-1, 12, 700) ; Bold
            ;GUICtrlSetData($fadescription, $avIPs[$x][1])
EndIf


    GUICtrlSetState($loadingfa, $GUI_HIDE)
    GUICtrlSetState($checkfa, $GUI_SHOW)


EndFunc   ;==>Check


Func _Exit()
    FileClose($FaFileOpen)
    Exit
EndFunc   ;==>_Exit

Edit:

Of course, to read in the file and to split the array each time is a bit inefficient, it can be done once (provided that the text file is not changed on the fly).

 

from the Help file:

Quote

ExitLoop

Terminate a While/Do/For loop.

 

Edited by Dan_555
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
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...