明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1502|回复: 35

[提问] 难题求教!让字符串成为一个变量

[复制链接]
发表于 2023-12-12 07:54 | 显示全部楼层 |阅读模式
  1. ;判断注册表是否存在并设置默认值
  2. (defun READZC (col mrz /)
  3.   (setq col (vl-registry-read "HKEY_CURRENT_USER\\Software\\NUM\" "col"))
  4.   (if col
  5.     (setq col col)
  6.     (setq col mrz)
  7.   )
  8. )

  9. (READZC la "8")
想搞个这样的自定义函数、但是"col"不知道怎么让他成为一个变量、求教各位大神有没有好的办法
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2023-12-13 13:20 | 显示全部楼层
本帖最后由 llsheng_73 于 2023-12-14 13:09 编辑

  1. (defun READZC(str val / va)
  2.   (set(read str)
  3.       (if(setq va(vl-registry-read "HKEY_CURRENT_USER\\Software\\NUM\"" str))
  4.         va val))
  5.   )


_$ (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-13 20:28
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2023-12-12 10:36 | 显示全部楼层
飞雪神光 发表于 2023-12-12 10:06
把引号去掉就对应了 (vl-registry-read relj key) 我这里发的你是看都没看吗
  1. ;设置颜色
  2. (setq col (vl-registry-read "HKEY_CURRENT_USER\\Software\\num\" "col"))
  3. (if col
  4.         (setq col col)
  5.         (setq col "8")
  6. )

  7. ;设置图层
  8. (if la
  9.         (setq la la)
  10.         (setq la "0")
  11. )

  12. ;设置线型比例
  13. (setq lts (vl-registry-read "HKEY_CURRENT_USER\\Software\\num\" "lts"))
  14. (if lts
  15.         (setq lts lts)
  16.         (setq lts "1")
  17. )


我现在就是有很多这样的代码、每次都是重复的、比较乱、所以想搞一个自定义函数

点评

(if (null x)(setq x “0”))一句就可以了。楼主想得复杂了。 似乎不知道null 函数?  发表于 2023-12-12 15:05
发表于 2023-12-12 08:10 | 显示全部楼层
  1. (read "col")或 'col 就是变量了
  2. ;;说明:获取注册表值 有则读取 无则新建
  3. ;;参数:relj:注册表路径
  4. ;;参数:key:键
  5. ;;参数:va:键值
  6. ;;返回getrelj relj "kehu1" 1)
  7. (defun getrelj(relj key va /)
  8.         (if (vl-registry-read relj key)
  9.                 (setq bl(vl-registry-read relj key))
  10.                 (vl-registry-write relj key (setq bl va))
  11.         )
  12.         bl
  13. )
 楼主| 发表于 2023-12-12 08:46 | 显示全部楼层

谢谢、不过你这个好像变量值太多了、你看下我发的那个代码、我想要自定义函数里面只有col和mrz这两个、注册表的主键值想让他不固定、不知道有没有办法实现
发表于 2023-12-12 09:19 | 显示全部楼层
不知道是不是这个意思?
  1. (set (read "STR") "你的值") -->>等于 (setq STR "你的值")


发表于 2023-12-12 09:29 | 显示全部楼层
本帖最后由 lijiao 于 2023-12-12 09:31 编辑
  1. ;判断注册表是否存在并设置默认值
  2. (defun READZC (col mrz / mrz1)
  3.   (setq        mrz1 (vl-registry-read
  4.               "HKEY_CURRENT_USER\\Software\\NUM\\"
  5.               "col"
  6.             )
  7.   )
  8.   (if mrz1
  9.     (set col mrz1)
  10.     (set col mrz)
  11.   )
  12. )


  13. (READZC 'la "8")
 楼主| 发表于 2023-12-12 09:37 | 显示全部楼层

你好、我现在想要要解决的是注册表主键中的"col"、怎么让他和(READZC la "8")中的la是对应的
发表于 2023-12-12 10:06 | 显示全部楼层
xiaocainiao 发表于 2023-12-12 09:37
你好、我现在想要要解决的是注册表主键中的"col"、怎么让他和(READZC la "8")中的la是对应的

把引号去掉就对应了 (vl-registry-read relj key) 我这里发的你是看都没看吗
 楼主| 发表于 2023-12-12 10:27 | 显示全部楼层
飞雪神光 发表于 2023-12-12 10:06
把引号去掉就对应了 (vl-registry-read relj key) 我这里发的你是看都没看吗

看了啊、但是你应该没太明白我的需求、我那个获取注册表主键代码中是有两个col的、我是想将这两个col作为同一个自变量来使用的
发表于 2023-12-12 10:35 | 显示全部楼层
没明白你说的 但是代码应该是这个意思 你在纠结变量名?变量多了也不行?
  1. (defun readzc (col mrz /)
  2.   (setq col (vl-registry-read "HKEY_CURRENT_USER\\Software\\NUM\\" col))
  3.   (if col
  4.     (setq col col)
  5.     (setq col mrz)
  6.   )
  7.         col
  8. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-17 17:27 , Processed in 0.211115 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表