发表回复 
AutoHotkey挑战第二季
2012-10-29, 23 : 04 (这个帖子最后修改于: 2014-07-27 14 : 11 by robertL.)
AutoHotkey挑战第二季
也许有人觉得AutoHotkey挑战第一季是旁门左道,那种特性比较偏,不过主要目的是提醒大家帮助中许多细碎而容易被忽略的内容(另外我还在那里埋了个小伏笔)。这次的问题技巧性比较强,在实践中用处可能较大。​
对于脚本的配置,在实际中一般会使用INI文件,有许多原因让这种选择很自然,例如配置经常类似键值对的形式,且AutoHotkey提供了直接操作INI文件的命令。现​在假设有一个INI文件,其中包含有100对键值对,把这100个值读取到变量后,需要判断其中哪些值为空(注意即使设了默认值,值为空也不会被赋为默认值,这与读取出错​有区别)。在大多数情况下,对于空值的这些配置变量需要重新赋为默认值,此时一般的方法是使用条件语句,例如 If 语句或三元运算符,然而,这样则需要 100 个 If 或三元运算符,所以这次的挑战是在脚本中通过少于 10 个的条件判断(即在脚本中出现条件判断的次数少于 10)来实现相同的操作,即为 100 个变量中其中值为空的变量赋值为字符串“Default”。这 100 个变量的名称没有规律。
代码: (全选)
; 下面是用来保存从INI文件中读取出来的配置的变量,举个例子
apple := ""
ahk := "Error"
file := 1
var := "Hello"
next := 0
ris := 0
...
这个问题以前准备的,所以还是发出来,可能有些难度,所以按现在的想法可能在新年前后公布答案,除非有人先解决了。最重要的提示是,解决方法不是高深的方法,更不应想到使​用Windows API或类似的不是AutoHotkey内在特性的方法。
以后要上来不太容易了,所以这里也算做个说明吧。

AutoHotkey 学习指南 我的帖子
我不生产代码,我只是 AutoHotkey 的搬运工:从官方到中文;从其他语言到 AutoHotkey;有时则把 AutoHotkey 搬运到普通用户面前。
访问这个用户的网站 查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 1用户表示感谢amnesiac
2012-10-29, 23 : 30
 
amnesiac大要卸任了嗎?
真是太可惜了:(
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2012-10-30, 09 : 04
 
热情从我做起,大家要效防amnesiac.让aHK发展更好

自己做的更适合自己
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 1用户表示感谢sj798
2012-10-30, 09 : 55
 
铁打的营流水兵,相信回来只是时间问题,希望在这段时间里能出来几个水平高,有热情的童鞋能参与论坛管理,共同发展ahk论坛。

有时候付出的努力不一定有好的结果,满腔热血也不一定创造辉煌历史,但我们一直在努力着坚持着等待着,总有雨后天晴的那天。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 1用户表示感谢nepter
2012-12-06, 18 : 48
 
沒什麼人回答,我先來獻醜好了。
代码: (全选)
pathINI := "Setting.ini"

func(x){
        var := x . %x%
        %var% := "Default"
}

Loop, read, %pathINI%
{
    Loop, parse, A_LoopReadLine, `n
    {
                RegExMatch(A_LoopField, "\s*\[?(\w*)\]?\s*=?", UnquotedOutputVar)
                IniRead, %UnquotedOutputVar1%, %pathINI%, SectionName, %UnquotedOutputVar1%
                func(UnquotedOutputVar1)
    }
}

;---- 以下用 MsgBox 來檢驗 ----
MsgBox, % "apple = " . apple
MsgBox, % "ahk = " . ahk
MsgBox, % "file = " . file
MsgBox, % "var = " . var
MsgBox, % "next = " . next
MsgBox, % "ris = " . ris
Setting.ini 的內容
代码: (全选)
[SectionName]
apple = ""
ahk = "Error"
file = 1
var = "Hello"
next = 0
ris = 0
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 1用户表示感谢shyangs
发表回复 


论坛跳转:


联系我们 | Autohotkey 中文站 | 回到顶部 | 回到正文区 | 精简(归档)模式 | RSS 聚合