【发布时间】:2018-03-06 14:47:53
【问题描述】:
很高兴回到论坛!
所以在 AHK 文档、stackexchange 和 ahk_forum 中进行了大量搜索后,我决定向专家寻求帮助
我将解释我正在处理的代码,然后发布一些示例。
我编写了一个脚本,它提取 6 个不同单词文件的未翻译和未验证单词的值,并通过 WebTranslateIt(站点)为 23 种不同的语言执行此操作。我已经设法通过处理代码块并将“fileid”变量设置为每个新查询之前的 6 个文件之一来使其工作,但是当我到达语言迭代部分时,我很快注意到它会很多更高效(并且代码显着减少)只需在一个循环中使用一个循环遍历两个数组直到数组结束。
此脚本使用 Google Chrome 访问网站,然后继续将几个 jQueries 注入开发人员工具并将结果提取到独立命名的变量中(我想将其分配为关联数组的一部分)。
这是我遇到问题的部分...我可以通过以下方式成功循环数组:
langid := ["bg", "cs", "da", "el", "eu", "fi", "hr" , "ja", "ko", "lt", "nb",
"nl", "pl", "pt", "ro" , "ru", "sk", "sl", "sv", "th" , "tr", "zh", "zh-Hant"]
For Key, Value in langid
; MsgBox, %A_Index% = %Value% ; the MsgBox displays index values correctly but when putting my script in a loop start after the For Key part, it does not provide a value when sending the var inside a url. This works fine when I set the var manually before sending the URL.
但是当我尝试在循环执行主要查询的脚本之前运行此程序时,我发送的用于更改语言的 URL 中的“langid”变量为空白。
我想在所有语言中循环 23 次脚本。当脚本进入循环时,有一部分输入带有 %langid% 的页面 URL,我无法让这部分与上述代码一起使用。
除此之外,我还想为索引中的每个键分配更多值,如下所示:
langid := ["bg", "cs", "da", "el", "eu", "fi", "hr" , "ja", "ko", "lt", "nb",
"nl", "pl", "pt", "ro" , "ru", "sk", "sl", "sv", "th" , "tr", "zh", "zh-Hant"]
lang := ["Bulgarian", "Czech", "Danish", "Greek", "Basque", "Finnish",
"Hungarian", "Japanese", "Korean", "Lithuanian", "Norwegian", "Dutch",
"Polish", "Portuguese", "Romanian", "Russian"]
'lang' 数组应该引用 'langid' 中的索引位置,因为我在一些显示字数统计进度的 MsgBoxes 中将它用作描述性变量,并在末尾使用一个函数来写入每个文件 6 个文件的总结果语言。 (这纯粹是美学,但我很想让它在循环中工作)
我还需要一些与 wordfile 非常相似的东西:
filenum := ["342553", "342582", "342411", "342367", "342467", "342502"]
wrdfile := ["OHFrontend", "OHFrontendListing", "HouseTypeAndSubType", "GuestType", "RoomTypeFeatureName", "RoomTypeFaturePrefixAndBracketOption"]
'wrdfile' 数组也是纯粹的美学,因为我宁愿在总数确认中显示文件名而不是 filenum。然而,“filenum”很重要,需要遍历数组中的每个值一次,直到到达末尾,此时它需要重新启动,但使用“lang”数组中的下一种语言。
我认为以下结构会起作用:
langid := [val1, val2, etc..]
lang := [val1, val2, etc..]
For Key, Value in langid ; iterate through Languages
Loop
{
filenum := [val1, val2, etc...]
wrdfile := [val1, val2, etc...]
Run Chrome
Open Site
For Key, Value in filenum ;iterate through Wordfiles
Loop
{
Send URL containing 'langid' var & 'filenum' var
Open DevTools and send jQuery and store totals
Confirm totals in MsgBox and save in txt file
}
Return
值得注意的是,所有语言都需要遍历相同的 6 个 wordfile,所以也许文件数组也可以是第一个关联数组的一部分,而不是两个不同的数组……?不确定这里最好的方法是什么。
请帮助我找到循环的正确结构和语法,如果可能的话,请尽可能为我指出正确的方向。 (我知道我没有正确关联它们)
我在形成关联数组方面需要帮助...我查找的文档和示例不够详尽。请至少帮助推动正确的方向:oops:
我需要使用 For Key 命令的帮助。它应该通过它下面的循环,在每次迭代中提供下一个“langid”值,直到最后一个值(“zh-Hant”)。
一旦我的第 2 点开始工作,我将调整脚本以循环遍历 6 个单词文件,然后重复语言。我的意图是遍历每种语言的 6 个单词文件。一旦工作正常,我将添加一个小的 GUI 提示,以启用整个循环或仅通过特定语言。
Link to AHK_Forum post containing full code.
再次感谢!
【问题讨论】:
标签: autohotkey associative-array