Das Ami Posted December 22, 2009 Share Posted December 22, 2009 (edited) 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? expandcollapse popup#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 December 22, 2009 by Das Ami Link to comment Share on other sites More sharing options...
water Posted December 22, 2009 Share Posted December 22, 2009 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. expandcollapse popup#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 - WikiExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example ScriptsOutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - WikiOutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - DownloadOutlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - WikiPowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - WikiTask Scheduler (NEW 2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs:Excel - Example Scripts - WikiWord - Wiki Tutorials:ADO - WikiWebDriver - Wiki Link to comment Share on other sites More sharing options...
Das Ami Posted December 22, 2009 Author Share Posted December 22, 2009 Nice! Thanks water. I'm sure I'll be able to get it automated again myself. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now