配置文件内容读取
如何读取配置文件内的数据?(defun C:TT()
;读取配置文件内的数据
(setq LL 配置文件内"LL="后的值)
(setq WW 配置文件内"WW="后的值)
(setq RR 配置文件内"RR="后的值)
(setq TT 配置文件内"TT="后的值)
(princ)
)
配置文件.ini 内容如下:
\\\\\\\\\\\\\\\\\\\\\\\\\\\
;注释行可忽略
;注释行可忽略
;
LL = 1.2
WW = 1.5
RR = 3.0
TT = 5.0
......
\\\\\\\\\\\\\\\\\\\\\\\\\\\
;;;_$ (p-ini-read "D:\\Profile\\desktop\\新建文本文档.ini")
;;;(("LL" "1.2") ("WW" "1.5") ("RR" "3.0") ("TT" "5.0") ("......"))
(defun p-ini-read (filename / file line content)
(if (and (setq filename (findfile filename))
(setq file (open filename "r"))
)
(progn
(while (setq line (read-line file))
(if (and (setq line (vl-string-trim " \t\n" line))
(/= line "")
(/= (p-string-left line 1) ";")
(/= (p-string-left line 2) "\\\\")
(setq line (p-string-tokenize line "="))
)
(setq line (mapcar '(lambda (e) (vl-string-trim " \t\n" e)) line)
content (cons line content)
)
)
)
(close file)
(reverse content)
)
)
) 写文件的时候不要“=”
直接用“空格”分隔
读出来的字符串
用read处理
(defun c:1()
(setq biao1
(list
'("LL" 1.2)
'("MM" 3.0)
'("NN" 2.5)
)
)
(setq aaa (open "c:\\1.no" "w"))
(foreach x biao1
(prin1 x aaa)(princ "\n" aaa)
)
(close aaa)
(princ)
)
(defun c:2()
(setq biao2 '())
(setq aaa (open "c:\\1.no" "r"))
(while (setq tt (read-line aaa))
(setq biao2 (cons (read tt) biao2))
)
(close aaa)
(setq biao2 (reverse biao2))
(princ)
) 提供思路
1.
openfile 后readline ,一行一行的处理
接着根据获取的string,用wcmatch或者 vl-string-search 判断哪个是你要的.匹配到则 获取等号后的字符串
2
openfile后redline到一个表,对每个表元素用用wcmatch或者 vl-string-search 匹配
由于你这个都是=号分开的 可以从=断开 获取一个点表组成的表 就跟dxf组吗一样 用assoc获取等号后面的值
3.
如果你的这些个配置文件数据顺序是一定的,不需要具有可读性,可以只保留数据,不要前面的LL=一类的 这样读取比较简单 直接获取某行就行了 muwind 发表于 2022-5-15 09:44
提供思路
1.
openfile 后readline ,一行一行的处理
功能主要是储存变量的值到文本文档,方便以后读取变量的值,配置文件内可能有很多的数值,数据并不是固定的行 你可以在上面范例的基础上
再尝试下面的做法
biao1去掉子表里的【双引号】写出
biao2作如下处理
(foreach x biao2
(set (car x) (cadr x))
) masterlong 发表于 2022-5-15 16:42
你可以在上面范例的基础上
再尝试下面的做法
biao1去掉子表里的【双引号】写出
好的,谢谢大哥指点,学习了 有没有大神帮忙解决一下,自己搞了半天老是不对 本帖最后由 vectra 于 2022-5-16 22:16 编辑
直接存LISP文件来保存变量不是更方便
("LL"1.2)
("WW"1.5)
("RR"3.0)
("TT"5.0)
read-line之后对其read操作 就是标准的lisp表,然后就可以愉快的操作了
刚看了下 和“地板”的代码思路是一致的
我这源码都贴了
另一种方法也讲了
还搞不定?
masterlong 发表于 2022-5-16 22:17
我这源码都贴了
另一种方法也讲了
还搞不定?
也许楼主不能接受lsp文件格式保存;P
页:
[1]
2