TechHeadDJ
TechHeadDJ

Reputation: 137

Autohotkey String-comparison

For some reason, I can not get an autohotkey string comparison to work in the script I need it in, but it is working in a test script.

Tester

password = asdf

^!=::
InputBox,input,Enter Phrase,Enter Phrase,,,,,,,30,
if ( input == password ){
    MsgBox, How original your left home row fingers are
    Return
} else {
    MsgBox, You entered "%input%"
    Return  
}

Main

password = password

!^=::
InputBox,input,Enter Password,Enter Password,HIDE,,,,,,30,
if ( input == password ){
    MsgBox,"That is correct sir"
    ;Run,C:\Copy\Registry\disable.bat
    return
}else{
    MsgBox,That is not correct sir you said %input%
    Return
}

Main keeps giving me the invalid. Any ideas?

Upvotes: 3

Views: 8812

Answers (2)

ADJenks
ADJenks

Reputation: 3414

I found that strings in the clipboard were not comparing properly to strings in my source files when the strings contained in the source file contained non-ascii characters. After converting the file to UTF-8 with BOM, it would correctly compare.

The documentation doesn't say directly that it will affect string comparisons but it does say that it has an affect. In the FAQ section it states:

Why are the non-ASCII characters in my script displaying or sending incorrectly?

Short answer: Save the script as UTF-8 with BOM.

Although AutoHotkey supports Unicode text, it is optimized for backward-compatibility, which means defaulting to the ANSI encoding rather than the more internationally recommended UTF-8. AutoHotkey will not automatically recognize a UTF-8 file unless it begins with a byte order mark.

Source: https://web.archive.org/web/20230203020016/https://www.autohotkey.com/docs/v1/FAQ.htm#nonascii

So perhaps it does more than just display and send incorrectly, but also store values incorrectly causing invalid comparisons.

Upvotes: 0

bgmCoder
bgmCoder

Reputation: 6371

Your "main" script works just fine.

The == comparitor is case sensitive, you know.

Upvotes: 2

Related Questions