kele99kele 发表于 2015-9-7 18:28:08

【通用函数】:读取、修改任意ini、txt参数设置文件中的参数

本帖最后由 kele99kele 于 2015-9-7 18:33 编辑

;读取参数值(N::GetValue "nice.ini" "ATSTART")
;作用:读取nice.ini文件中ASTART参数的属性值设置
;返回:ASTART的属性值
(defun N::GetValue (fle key / value valuetmp)
(if (findfile fle)
    (progn
      (setq valuetmp (vldos-readfile (findfile fle)))
      (while (cadr valuetmp)
      (if
          (wcmatch key (car (XD::String:Parse (car valuetmp) " ")))
          (setq value (atoi (cadr (XD::String:Parse (car valuetmp)" "))))
      )
      (setq valuetmp (cdr valuetmp))
      )
      value
    )
    (progn
      (princ (strcat "\n终止:未找到文件\""fle "\"请将文件放置于AUTOCAD的搜索支持路径下。"))
      (princ)
    )
)
)
;替换参数值(N::SetValue "nice.ini" "ATSTART" "123")
;作用1:将nice.ini文件中ASTART参数的属性值设置为123。
;作用2:如果nice.ini文件中没有ASTART参数则在文件的末尾添加ASTART参数并设置为123。
;返回:nice.ini文件的存储路径
(defun N::SetValue (fle key value / lst lsttmp ifset)
(if (findfile fle)
    (progn
      (setq lsttmp (vldos-readfile (findfile fle))
      lst '()
      ifset 0
      )
      (while (car lsttmp)
      (if
          (wcmatch key (car (XD::String:Parse (car lsttmp) " ")))
          (progn
            (setq lst (cons (strcat (car (XD::String:Parse (car lsttmp) " ")) "    " Value) lst))
            (setq ifset 1)
          )
          (setq lst (cons (car lsttmp) lst))
      )
      (setq lsttmp (cdr lsttmp))
      )
      (if (= ifset 0) (setq lst (cons (strcat key "    " Value) lst)))
      (vldos-writefile (findfile fle) (reverse lst) T)
    )
    (progn
      (princ (strcat "\n终止:未找到文件\""fle "\"请将文件放置于AUTOCAD的搜索支持路径下。"))
      (princ)
    )
)
)一个用来读取,另一个用来修改或写入,用到了黄老大的通用函数以及一个晓东的通用函数,可以在论坛上自己搜索
东拼西凑的东西,不过效果不错,我只发了我写的源码,其他的函数请自行下载。

kele99kele 发表于 2015-9-7 18:29:34

本帖最后由 kele99kele 于 2015-9-7 18:36 编辑

这些是黄老大以及st788796老兄的函数说明,方便大家理解。;分割字符串
;函数名称:XD::String:Parse
;调用格式:(XD::String:Parse str ";")
;返回值:将str以";"分割为表
;例:(XD::String:Parse str ";")以“;”为分隔符划分字符串“str”为表
;函数简介:任意符号分割字符串为表
;函数来源:晓东论坛XD::AutoLoadLisp函数的内嵌函数
;函数作者:st788796
;适用版本:不限
;最后更新时间:2013-07-10
;备注:九群于2015.9.7将此函数从主函数中剥离并添加说明

;●82 [功能] 转换路径中字符 "/" 为 "\\" 并返回大写值
;●用法: (vldos-formatpath PathStringToFormat )
;●参数1: 路径字符串
;●返回值:转换后的字符串 或者None

;●84.18 [功能] 将字符串或表写入文件 (快于 AutoLISP write-line函数)
;●用法: (vldos-writefile FileNameString ContentStringList ModeFlag )
;●(vldos-writefile FileNameString ContentString ModeFlag )
;●参数1: 文本文件全路径名. (包括后缀名)
;●参数2: 要写入文件的字符串或表
;●参数3: 最加或覆盖标志. nil 最加, T 覆盖
;●返回值: 文本文件全路径名 or NIL

;●84.17 [功能] 读文本文件到表 (快于 AutoLISP read-line函数)
;●用法: (vldos-readfile FilenameToRead )
;●参数1: 文本文件全路径名. (包括后缀名)
;●      只有文本文件才能返回正确结果.
;●返回值: 返回包括文件内容的表 or NIL

cghdy 发表于 2020-8-15 21:21:51

你好,XD::String:Parse检索不出来

yu960312 发表于 2022-6-16 22:34:59

大哥,求XD::AutoLoadLisp函数,找不到此函数

mokson 发表于 2022-6-17 08:12:40

XD,是晓东论坛开发的插件。

gzsod 发表于 2023-8-18 22:26:30

好东西 学习·········
页: [1]
查看完整版本: 【通用函数】:读取、修改任意ini、txt参数设置文件中的参数