我正在制作一个脚本来从文件加载表情符号并打印出来,但是我很难让它工作,因为我从中读取的所有内容都是空白的。我是新人所以我确定我做错了什么,有人可以查看我的代码并告诉我它是什么吗? (绝对地址是对的)
三个字符串用于工具提示以显示上方和下方的内容,大小是表情符号的数量,Line是当前表情符号,pg up和dn循环,以及结尾类型表情符号。到目前为止,我很困惑为什么没有文件读取行将字符串设置为空。什么,甚至不是End Block,都可以。
#InstallKeybdHook
SendMode Event
#UseHook
File:= "C:\Users\Ben\Desktop\ahk\emoticons.txt"
Line := 0
size := 0
FileReadLine, string, %File%, %Line%
FileReadLine, string1, %File%, mod(%Line%-1, size)
FileReadLine, string2, %File%, mod(%Line%+1, size)
Loop, read, %File%
{
size += 1
}
start:
ToolTip, %string%`n%string1%`n%string2%, 100, 100, 1
~PgUp::
{
Line:=mod(%Line%+1, size)
FileReadLine, string, %File%, %Line%
FileReadLine, string1, %File%, mod(%Line%-1, size)
FileReadLine, string2, %File%, mod(%Line%+1, size)
}
return
~PgDn::
{
Line:=mod(%Line%-1, size)
FileReadLine, string, %File%, %Line%
FileReadLine, string1, %File%, mod(%Line%-1, size)
FileReadLine, string2, %File%, mod(%Line%+1, size)
}
return
~End::
{
FileReadLine, str, %File%, %Line%
Send %str%
}
return
goto, start
答案 0 :(得分:0)
没有什么太复杂,只需做一些改动。
对于FileReadLine
,与其他语言不同,行数开始为1
而不是0
。因此,尝试阅读第0
行,FileReadLine
基本上不会“读”任何内容。
对于mod()
函数,文档说:
如果第二个参数为零,则该函数产生一个空白结果(空字符串)。
逻辑上,当脚本启动且size
为0
时,FileReadLine
会尝试读取行号“空白”。我记得,“空白”不是数字。
mod(%Line%-1, size)
是表达式。这意味着,所有内容都在这里被解析为表达式。如果成功,Mod()
将像正常一样返回其计算值(考虑#2)。如果我们考虑%Line%-1
,解析为表达式,这就是我们所拥有的:
假设我们有var:=4
和var_b:=(%var%-1)
。有人可能会认为var_b
等于3
,但这是错误的。在var_b:=(%var%-1)
中,var
的内容将被评估为变量的名称,然后是该变量的内容。这意味着它需要4
并将其评估为名为4
的变量而不是值4
。除非已设置变量4
,否则它将返回“空白”。我记得(再次),“空白”不是一个数字。在这种情况下,我想预期的表达式为mod(Line-1, size)
。