Jump to content

[Solved] Condition never matches


Das Ami
 Share

Recommended Posts

Hi AutoIT Community

I'm trying to make a program that will behave similar like google's search suggestion:

I load a text file containing words, enter the first letter of the word I am looking for into the Inputbox and it deletes all words that don't match from the array.

My condition

If Not StringLeft($arr[$x], StringLen($i))=$i Then
never matches though. What am I doing wrong?

#include <Array.au3>
#include <File.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
$Form1 = GUICreate("Form1", 356, 60, 192, 114)
$Input1 = GUICtrlCreateInput("", 8, 8, 329, 21)
$Label1 = GUICtrlCreateLabel("0", 8, 40, 36, 17)
GUISetState(@SW_SHOW)

HotKeySet("{PAUSE}", "debug")

Dim $arr
_FileReadToArray("e.txt", $arr)
_ArrayDisplay($arr)

Func debug()
    _ArrayDisplay($arr)
EndFunc

Func check($i)
    For $x = 1 to $arr[0]
        If Not StringLeft($arr[$x], StringLen($i))=$i Then
            _ArrayDelete($arr, $x-1)
            $arr[0]=UBound($arr)
        EndIf
    Next
    GUICtrlSetData($Label1, $arr[0])
EndFunc

While 1
    Sleep(10)
    If Not GUICtrlRead($Input1)="" Then
        check($i)
    EndIf
WEnd
Edited by Das Ami
Link to comment
Share on other sites

I rearranged your script a bit - now it works for me. The only remaning problem is that you have to hit the enter key after each letter.

#include <Array.au3>
#include <File.au3>
#include <GUIConstantsEx.au3>

HotKeySet("{PAUSE}", "debug")

Dim $arr
_FileReadToArray("e.txt", $arr)
_ArrayDisplay($arr)

Global $i
$Form1 = GUICreate("Form1", 356, 60, 192, 114)
$hInput1 = GUICtrlCreateInput("", 8, 8, 329, 21)
$hLabel1 = GUICtrlCreateLabel("0", 8, 40, 36, 17)
GUISetState()

While 1
    $msg = GUIGetMsg()
    Select
        Case $msg = $GUI_EVENT_CLOSE
            Exit
        Case $msg = $hInput1
            $sInput1 = GUICtrlRead($hInput1)
            If $sInput1 <> "" Then check($sInput1)
    EndSelect
WEnd

Func debug()
    _ArrayDisplay($arr)
EndFunc

Func check($i)
    For $x = $arr[0] To 1 Step -1
    If StringLeft($arr[$x], StringLen($i)) <> $i Then
    _ArrayDelete($arr, $x)
    $arr[0]=UBound($arr)-1
    EndIf
    Next
    GUICtrlSetData($hLabel1, $arr[0])
EndFunc

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki
Task Scheduler (NEW 2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki

Standard UDFs:
Excel - Example Scripts - Wiki
Word - Wiki

Tutorials:
ADO - Wiki
WebDriver - Wiki

 

Link to comment
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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...