ahk:如何读取非 txt 文件并将信息保存到变量?

ahk: how to read non txt file and save infos to variables?

我有一个游戏(坦克世界)的回放文件,我想从中读取信息并将它们存储到变量中。

当我用记事本打开文件时,似乎有一些 xml "code" 包含一些我想要的信息,然后那里开始重播文件数据,所以它只是胡言乱语。示例:http://pastebin.com/faBPUn1d

我试图用 FileReadLine 提取第一行,但变量只包含废话:(

如何使用 ahk 读取文件,将 "damageDealt":9321 等信息存储到变量中? 谢谢你的帮助

这是二进制文件中的 JSON 数据,因此请使用 FileOpen 函数打开它。

有两个JSON块,每个块都以其长度为前缀(NumGetFile.ReadUInt或类似于救援)所以你可以使用它提取块并通过它到 AutoHotkey-JSON parser

然后您将能够分层访问对象或像任何对象一样枚举它:
result.personal["14337"].details["(9291360, 7169)"].damageDealt.

示例:

#include JSON.ahk ; download from https://github.com/cocobelgica/AutoHotkey-JSON

; read the data
f := fileOpen("14473423299267_usa_A02_M2_lt_thepit.wotreplay", "r")
f.seek(8)
data1 := JSON.load(f.read(f.readUInt()))
data2 := JSON.load(f.read(f.readUInt()))
f.close()

; write the data as pretty-formatted JSON
f := fileOpen("data1.json", "w"), f.write(JSON.dump(data1,,"`t")), f.close()
f := fileOpen("data2.json", "w"), f.write(JSON.dump(data2,,"`t")), f.close()

; load the first item of 'data2[1].personal' object into personalInfo
data2[1].personal._NewEnum().Next(k, personalInfo)

msgbox % "playerName: " data1.playerName "`n"
       . "dateTime: " data1.dateTime "`n"
       . "mapName: " data1.mapName "`n"
       . "`n"
       . "damageDealt: " personalInfo.damageDealt "`n"