yolio2003 发表于 2013-1-30 01:07:15

ahk

有人肯要我了。哈哈。作为一个小白。我要为未来的工作做好一些准备啊!
今天看到一个ahk的小帖子 记录下来:http://ahk.5d6d.com/viewthread.php?tid=1165
ahk 存储数据的各种方法
[ 读写文本文件 ]
 
相关命令: FileAppend, FileRead, FileReadLine, Loop
 
最简单的办法, 没格式要求, 可根据自己爱好使用符号分隔数据或按行分隔数据或其它. 缺点是检索和修改不咋方便.
 
示例
; 每行存储一个用户信息, 每个用户信息用逗号分隔
user = helfee,male,18`nBLooM2,male,24
 
; 写入当前目录的 user.lst 文件中, 当然这个文件名可以随便取
FileAppend, %user%, user.lst
 
; 循环读取 user.lst 文件, 每次读取一行
Loop, Read, user.lst
{
    ; 解析每一行的内容, 按逗号分隔
    Loop, Parse, A_LoopReadLine, CSV
    {
        ; 输出数据
        MsgBox, %A_LoopField%
    }
}
 
[ 读写 ini 文件 ]
 
相关命令: iniRead, iniWrite, iniDelete
 
拿来做简单的配置文件最方便了, 用起来也很容易.
 
示例
; 在当前目录的 settings.ini 文件中的 login_section 段中设置 user_name 的值为 helfee
; 如果没有自动新建
IniWrite, helfee, settings.ini, login_section, user_name
IniWrite, 999, settings.ini, login_section, password
 
; 读取用户名, 存储 user_name 变量中并输出
IniRead, user_name, settings.ini, login_section, user_name
MsgBox, %user_name%
 
; 删除 settings.ini 文件中 user_name 这一行
IniDelete, settings.ini, login_section, user_name
 
; 再次读取会读取失败
IniRead, user_name, settings.ini, login_section, user_name
; 输出 ERROR
MsgBox, %user_name%
 
[ 读写 xml 文件 ]
 
相关库文件: xpath.ahk
 
官网论坛链接: http://www.autohotkey.com/forum/topic17549.html
 
以 xpath 的方式读写 xml 文件, 通用性好, 批量操作方便. 缺点是要知道 xpath 语法规则, 另外这个库貌似还有点小问题, 比如遇到有注释的 xml 文件有可能就 bug 了.
 
示例猛插这里.
 
xml 及 xpath 相关知识轻抚这里.
 
[ 读写 json 格式 ]
 
相关库文件: json.ahk
 
官网论坛链接: http://www.autohotkey.com/forum/topic34565.html
 
以 json 格式读写数据, json 格式貌似在 javascript 中广泛使用. 不过这个库只能读写, 不能检索.
 
示例
; 添加引用
#Include json.ahk
 
; 建一个 json 格式的数据
; 第一对小括号是在 ahk 中支持多行文本的方法
; 第一对大括号表示 json 数据开始, json 数据以 key: value 的形式保存, ahk 中貌似必须加引号
; 第一对中括号表示这是一个数组
; 中括号里面的每个大括号表示一个实体
user_list = 
(
    {
        "user_list": 
            [{
                "name": "helfee",
                "sex": "male",
                "age": 18
             },
             {
                "name": "BLooM2",
                "sex": "male",
                "age": "24"
             }]
    }
)
 
; 读取数组第二个元素的 name 属性
MsgBox % json(user_list, "user_list.name")
 
; 修改第一个元素的 age 属性为 22
json(user_list, "user_list.age", 22)
 
; 写入文件保存
FileAppend, %user_list%, user_list.lst
 
json 相关知识敲这里.
 
[ 操作 Access 或 Excel ]
 
官网相关帖子: http://www.autohotkey.com/forum/topic16565.html
 
貌似是利用 COM 那个库然后通过 ADO 来操作, 没看懂, 有兴趣的可以去翻翻.
 
[ 操作 SQLite ]
 
相关库: SQLite.ahk
 
相关文件: sqlite3.exe, sqlite3.dll.  官网下载
 
官网相关帖子: http://www.autohotkey.com/forum/topic12752.html
 
建数据库需要 sqlite3.exe , 如果单独只要 CRUD 操作的话只用 sqlite3.dll 就行了. 大致原理是 DllCall (其实这东西也是超有用的样子...). 如果需要对大量数据进行存储, 检索等操作, 可以考虑这个.
 
示例
; 保证 sqlite3.exe 和 sqlite3.dll 在同一目录
 
; 添加引用
#Include SQLite.ahk
 
; 这个是建立一张 user 表, 有 3 列, 的 sql 语句
sql := "create table user(name, sex, age);"
 
; 利用上面建表的语句建立数据库叫 test.db , 同时返回一个值表示执行是否出错
has_error := _SQLite_SQLiteExe("test.db", sql, output)
; 如果返回值不为 0 表示出错, 为了方便下面的都没做判断了
if (has_error <> 0)
{
    ; $SQLITE_s_ERROR 是全局变量, 保存当前错误信息
    MsgBox % $SQLITE_s_ERROR "`n" output
    Return
}
 
; 初始化, 这个是必须的, 否则运行下面的脚本直接 over
has_error := _SQLite_Startup()
; 读取 test.db 文件
has_error := _SQLite_OpenDB("test.db")
 
; 插入两条数据, 第一个参数就写 -1 就可以了
has_error := _SQLite_Exec(-1, "insert into user values('helfee', 'male', 18)")
has_error := _SQLite_Exec(-1, "insert into user values('BLooM2', 'male', 24)")
 
; 再读取所有出来, 后面几个变量的用处同变量名
has_error := _SQLite_GetTable(-1, "select * from user", result, row_count, col_count)
; 查询结果行数
MsgBox % row_count
; 查询结果列数
MsgBox % col_count
 
; 查询结果, 每行存储一条数据, 数据用 | 分隔, 第一行存储的是列名
Loop, Parse, result, `n
{
    Loop, Parse, A_LoopField, |
    {
        MsgBox % A_LoopField
    }
}
 
; 关闭数据库连接
has_error := _SQLite_CloseDB(-1)
has_error := _SQLite_ShutDown()
复制代码
SQLite Getting Start (英文, 如果英文不太好使用灵格斯词霸将黑体看一遍大致就能用了, 也许...)
 
[ 操作 MySQL ]
 
官网相关帖子: http://www.autohotkey.com/forum/topic12482.html (看后面 PhiLho 的那帖)
 
 
页: [1]
查看完整版本: ahk