【INI】解析配置文件
本帖最后由 kucha007 于 2023-3-14 01:44 编辑不保证通用性,只是自己的程序需要:http://bbs.mjtd.com/thread-187339-1-1.html
;配置文件内部是这样的,第一个分号后面的是注释,前面的是值。更新也是这个逻辑。
1;PlotStyle
0;PaperSize
0;PrintName
相关的三个函数:
;串联用分隔符字符串@LeeMac
(defun K:Lst2Str (Lst Del / itm str)
(setq str (car Lst))
(foreach itm (cdr Lst)
(setq str (strcat str del itm))
)
str
)
;新建配置文件并获取数据
(defun K:ReadPtVar (FPath / Lst FName des lin)
(setq Lst '())
(if (not (setq FName (findfile FPath)));文件不存在
(progn
(setq des (open FPath "w"))
(princ
(K:Lst2Str '("1;PrintName" "0;PaperSize" "0;PlotStyle") "\n")
des
)
(close des)
)
)
(if (setq FName (findfile FPath))
(progn
(setq des (open FName "r"))
(while (setq lin (read-line des))
(setq lin (substr lin 1 (vl-string-position (ascii ";") lin)))
(setq Lst (cons lin Lst))
)
(close des)
)
)
(reverse Lst)
)
;将最新的设置记录到配置文件
(defun K:RecordPtVar (FPath NewLst / NewData FName des Nam lin)
(setq NewData '())
(if (setq FName (findfile FPath));文件存在
(progn
(setq des (open FName "r"))
(setq Nam 0)
(while (setq lin (read-line des))
(setq lin (strcat
(nth Nam (reverse NewLst))
(substr lin (1+ (vl-string-position (ascii ";") lin)))
)
)
(setq NewData (cons lin NewData))
(setq Nam (1+ Nam))
)
(close des)
(setq des (open FPath "w"))
(princ (K:Lst2Str NewData "\n") des)
(close des)
)
)
)
dcl1214 发表于 2023-3-15 14:48
ini的配置文件如果很多,或者是很大,当用户修改界面上的勾选项或者是默认项的时候,每次修改ini速度是很慢 ...
大佬,最近正在寻找用数据库代替ini配置文件的资料,能不能写一个示例程序
1 . 创建数据库
2 . 链接数据库
3 . 查询数据库指定项的值
4 . 修改数据库指定项的值
5 . 新增数据库指定项 本帖最后由 dcl1214 于 2023-10-9 14:06 编辑
yu960312 发表于 2023-10-9 06:17
大佬,最近正在寻找用数据库代替ini配置文件的资料,能不能写一个示例程序
1 . 创建数据库
2 . 链接数 ...
针对数据库我做过直播的,同时也在明经发布了很多示例,明经群里很多人在用我分享的exe
【金山文档】 数据库DBO接口函数说明
https://kdocs.cn/l/cnRzPSRIaCJ9
dcl1214 发表于 2023-3-15 14:48
ini的配置文件如果很多,或者是很大,当用户修改界面上的勾选项或者是默认项的时候,每次修改ini速度是很慢 ...
感谢回复,目前用的比较简单,只是几个参数而已。
你说的数据库蛮有意思,不过我不会,请教一下那里可以找到案例吗?有时间学习一下 为啥要解析ini文件,直接把list转成字符串然后打印到文件不香吗,直接用assoc和subst就可以实现查找和替换 本帖最后由 kucha007 于 2023-3-14 08:33 编辑
fangmin723 发表于 2023-3-14 07:15
为啥要解析ini文件,直接把list转成字符串然后打印到文件不香吗,直接用assoc和subst就可以实现查找和替换
现在就是这样的啊 .ini 文件是有专门格式的。由多个节点 node 和 关键字 值 组成。
当然 你自用的话,怎么定义格式都无所谓。
keyid = value # 说明
# 注释说明
vitalgg 发表于 2023-3-14 09:21
.ini 文件是有专门格式的。由多个节点 node 和 关键字 值 组成。
当然 你自用的话,怎么定义格式都无所谓 ...
感谢回复,有看到你的帖子。自用的话只是需要有一个文件储存信息,所以不需要太复杂 kucha007 发表于 2023-3-14 09:24
感谢回复,有看到你的帖子。自用的话只是需要有一个文件储存信息,所以不需要太复杂
主要是你这ini文件不满足通用的ini文件格式标准,建议自己起个后缀名 d1742647821 发表于 2023-3-14 10:50
主要是你这ini文件不满足通用的ini文件格式标准,建议自己起个后缀名
明白,直接改txt 谢谢分享{:1_1:} ini的配置文件如果很多,或者是很大,当用户修改界面上的勾选项或者是默认项的时候,每次修改ini速度是很慢的,建议改成数据库模式读取,一个20M的ini文件,修改其中一个小小的地方,只需要0.001秒
页:
[1]
2