【问题标题】:AutoHotKey throwing Error: Unexpected "}" although the brackets appear to be correctAutoHotKey throwing Error: Unexpected "}" 尽管括号看起来是正确的
【发布时间】:2019-11-06 09:07:06
【问题描述】:

添加 Else 语句后,如果括号不正确,脚本将无法编译。编译器说第 67 行是罪魁祸首,我不知道为什么。

#NoEnv
SetWorkingDir %A_ScriptDir%
CoordMode, Mouse, Pixel
SendMode Input
#SingleInstance Force
SetControlDelay 1
SetWinDelay 0
SetKeyDelay -1
SetMouseDelay -1
SetBatchLines -1

^!6::
CoordMode, Pixel, Screen
CoordMode, ToolTip, Screen
CoordMode, Mouse, Screen

Click, 830, 393
Sleep 2000
Click, 678, 538
Sleep 500

Click, 840, 800
Sleep 2000
Click, 671, 974
Sleep 500


Click, 1775, 300
Sleep 2000
Click, 1643, 487
Sleep 2000

var = 0
Loop {
    ImageSearch, FoundX, FoundY, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, *100 C:\Users\USER\Desktop\Folder\ImageAssets\storage4x4\image%var%.jpg

    If (ErrorLevel = 0) {
        If %var% = 0 {
            Click, %FoundX%, %FoundY%
            Sleep 50
            Click, %FoundX%, %FoundY%
            Sleep 100
            ToolTip, Refreshing Store..., %FoundX%, %FoundY%
        }

        Else {
            SoundPlay, C:\Users\USER\Desktop\Folder\SoundAssets\found.wav
            Click, %FoundX%, %FoundY%
            Sleep 50
            Click, %FoundX%, %FoundY%
            ToolTip, image%var%.jpg, %FoundX% + 10, %FoundY% + 10
            ErrorLevel := -1
            FoundX := ""
            FoundY := ""
            SearchAndPurchase()
        }
    }

    If ErrorLevel 
        ToolTip, Didn't find image%var%.jpg, 0, 25

    If var >= 10 
        var = 


     var += 1
}
Return

SearchAndPurchase(){
    Sleep 5000
    var = 0 
    Loop, 5 {
        var += 1
        Sleep 5000
        ImageSearch, FoundX, FoundY, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, *100 C:\Users\USER\Desktop\Folder\ImageAssets\storage4x4\Storage4x4Store\image%var%.jpg

        If (ErrorLevel = 0) {
            SoundPlay, C:\Users\USER\Desktop\Folder\SoundAssets\chaching.wav
            Click, %FoundX%, %FoundY%
            ToolTip, $$$ image%var%.jpg $$$, %FoundX% + 10, %FoundY% + 10
            Sleep 50
            Click, %FoundX%, %FoundY%
            FoundX := ""
            FoundY := ""
        }
        If (ErrorLevel) 
            ToolTip, Couldn't purchase... 0, 75
        If (var >= 10) 
            var = 0
    }

    ToolTip, Leaving Store and refreshing market..., 0, 25
    Click, 678, 538
    Click, 678, 1043
    Click, 1643, 538
    Sleep 2000
    Click, 678, 538
    Click, 678, 1043
    Click, 1643, 538
    Sleep 2000
}


Esc:: ExitApp

我数了数所有的括号,代码中每个方向都有 7 个。我还删除了所有括号并重新添加了几次以尝试发现错误,但没有运气。这是怎么回事?

【问题讨论】:

    标签: compiler-errors autohotkey curly-braces unexpected-token


    【解决方案1】:

    你有一个浮动作业:

    var = 在第 63 行

    大括号是出乎意料的,因为它希望你完成你的句子。

    【讨论】:

    • 我修复了这个问题,但不幸的是我仍然遇到同样的错误
    • 当我编译你的代码时,我得到: >"C:\Program Files\AutoHotkey\Compiler\Ahk2Exe.exe" /in "C:\Users\Robert\DataFiles_9 Programs_Programming\AHK\Someonesprogram. ahk" 编译成功:>退出代码:0 时间:5.602... 不过话说回来,也许我的平台不可信,请参阅:stackoverflow.com/questions/58738870/…。我看到了,编译后,你得到了消息..忽略我的消息。
    【解决方案2】:

    如果其他人看到这个有类似问题,请检查您的 if 语句并将所有条件放入括号中。在这个例子中,它在将所有 if 条件放在括号内之后修复(连同 AnnoyinC 的评论)后工作。

    【讨论】:

    • 一般来说,正如您所提到的,对于 if 语句表达式(除了单个 true/false bool 变量)始终使用括号是一种很好的做法。但是,在您的特定情况下,发生的事情是它正在检查“var”的内容是否等于“0 {”,因此实际上没有开始大括号,因为它被用作表达式的一部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-28
    • 2022-01-24
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    • 2015-09-07
    • 2023-03-18
    相关资源
    最近更新 更多