【问题标题】:The following variable name contains an illegal character... but I don't know what it could be以下变量名包含非法字符...但我不知道它可能是什么
【发布时间】:2018-02-11 01:27:50
【问题描述】:

我在运行我的脚本时遇到问题。我一辈子都搞不清楚非法字符是什么。

我尝试将字符串连接放在不同的行上,但我得到了同样的错误。我尝试使用OneDateTwoDate 而不是Date_1Date_2,也无济于事。我更新了AHK,还是没有解决。

我应该注意我同时使用MonthCalDateTime Gui 控件来获取这些日期,然后使用FormatTime 对其进行格式化。我注意到的另一个可能提供线索的错误是,无论我在日期控件中选择什么日期,我都会得到2017-Sep-01 作为输出。可能没有来自控件的值,并且 FormatTime 函数正在使用今天的日期,因为它尝试处理的变量是空白/不存在。

除此之外,通常我喜欢在我的问题中更具描述性,但在这种情况下,我想我只能说:“帮助?”

【问题讨论】:

    标签: variables autohotkey illegal-characters


    【解决方案1】:

    当您使用表达式赋值方法:= 时,您不应该使用%。相反,您应该写Output := Output Date_1 "_to_" Date_2。当您使用 % 和表达式赋值时,Autohotkey 会取消对变量的引用并尝试将 OtherDescription--2017... 视为 变量名 并且 - 不是一个合法字符自动热键变量。

    以下示例将有助于使其更加清晰:

    astring := "some text"
    output = a
    Output := %Output%STRING
    MsgBox % Output
    

    MsgBox 将显示“一些文本”。发生这种情况是因为 Autohotkey 将 %Output% 取消引用到“a”,然后将 astring 变量的值分配给它(它连接“a”和“STRING”,然后查找名为 @987654332 的 variable @)。

    【讨论】:

    • 谢谢:)。令人困惑的是Output := %Output%STRING 确实有效(而且 IMO 不那么冗长),这似乎并没有在文档中真正考虑到,因为你应该使用(我猜)either表达式或传统语法,不要像那样将它们混合在一起,尽管我看到为了向后兼容而保留了该功能。 autohotkey.com/docs/Variables.htm#Variables。如果我错了/遗漏了什么,请纠正我?
    • @NotAnAmbiTurner 如果你的意思是连接,那么不,它不起作用。如果通过作品,您的意思是它做了某事,那么是的,它做了某事。我在答案中添加了一个示例,我希望现在一切都清楚了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    • 1970-01-01
    • 2010-12-18
    • 1970-01-01
    • 2019-10-16
    相关资源
    最近更新 更多