难题求教!让字符串成为一个变量
;判断注册表是否存在并设置默认值(defun READZC (col mrz /)
(setq col (vl-registry-read "HKEY_CURRENT_USER\\Software\\NUM\\" "col"))
(if col
(setq col col)
(setq col mrz)
)
)
(READZC la "8")想搞个这样的自定义函数、但是"col"不知道怎么让他成为一个变量、求教各位大神有没有好的办法
本帖最后由 llsheng_73 于 2023-12-14 13:09 编辑
(defun READZC(str val / va)
(set(read str)
(if(setq va(vl-registry-read "HKEY_CURRENT_USER\\Software\\NUM\"" str))
va val))
)
_$ (defun READZC(str val)
(set(read str)
(if(set(read str)(vl-registry-read "HKEY_CURRENT_USER\\Software\\NUM\"" str))
str val))
)
READZC
_$ la
nil
_$ col
nil
_$ (READZC "col"1)
1
_$ col
1
_$ (READZC"la""图层1")
"图层1"
_$ la
"图层1"
_$(vl-registry-write "HKEY_CURRENT_USER\\Software\\NUM\"" "la""图层2")
"图层2"
$ (READZC"la""图层1")
"图层2"
_$ la
"图层2"
_$
飞雪神光 发表于 2023-12-12 10:06
把引号去掉就对应了 (vl-registry-read relj key) 我这里发的你是看都没看吗
;设置颜色
(setq col (vl-registry-read "HKEY_CURRENT_USER\\Software\\num\\" "col"))
(if col
(setq col col)
(setq col "8")
)
;设置图层
(if la
(setq la la)
(setq la "0")
)
;设置线型比例
(setq lts (vl-registry-read "HKEY_CURRENT_USER\\Software\\num\\" "lts"))
(if lts
(setq lts lts)
(setq lts "1")
)
我现在就是有很多这样的代码、每次都是重复的、比较乱、所以想搞一个自定义函数 (read "col")或 'col 就是变量了
;;说明:获取注册表值 有则读取 无则新建
;;参数:relj:注册表路径
;;参数:key:键
;;参数:va:键值
;;返回:(getrelj relj "kehu1" 1)
(defun getrelj(relj key va /)
(if (vl-registry-read relj key)
(setq bl(vl-registry-read relj key))
(vl-registry-write relj key (setq bl va))
)
bl
) 飞雪神光 发表于 2023-12-12 08:10
谢谢、不过你这个好像变量值太多了、你看下我发的那个代码、我想要自定义函数里面只有col和mrz这两个、注册表的主键值想让他不固定、不知道有没有办法实现 不知道是不是这个意思?
(set (read "STR") "你的值") -->>等于 (setq STR "你的值")
本帖最后由 lijiao 于 2023-12-12 09:31 编辑
;判断注册表是否存在并设置默认值
(defun READZC (col mrz / mrz1)
(setq mrz1 (vl-registry-read
"HKEY_CURRENT_USER\\Software\\NUM\\\"
"col"
)
)
(if mrz1
(set col mrz1)
(set col mrz)
)
)
(READZC 'la "8") lijiao 发表于 2023-12-12 09:29
你好、我现在想要要解决的是注册表主键中的"col"、怎么让他和(READZC la "8")中的la是对应的 xiaocainiao 发表于 2023-12-12 09:37
你好、我现在想要要解决的是注册表主键中的"col"、怎么让他和(READZC la "8")中的la是对应的
把引号去掉就对应了 (vl-registry-read relj key) 我这里发的你是看都没看吗 飞雪神光 发表于 2023-12-12 10:06
把引号去掉就对应了 (vl-registry-read relj key) 我这里发的你是看都没看吗
看了啊、但是你应该没太明白我的需求、我那个获取注册表主键代码中是有两个col的、我是想将这两个col作为同一个自变量来使用的 没明白你说的 但是代码应该是这个意思 你在纠结变量名?变量多了也不行?
(defun readzc (col mrz /)
(setq col (vl-registry-read "HKEY_CURRENT_USER\\Software\\NUM\\" col))
(if col
(setq col col)
(setq col mrz)
)
col
)