找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 776|回复: 7

[求助] [求助]:大家通过什么方式保存用户的设置信息

[复制链接]
发表于 2006-5-13 15:53:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
比较复杂的程序都提供用户定制的功能,那么用户定制的信息怎么保存呢?ini文件还是注册表?
我个人倾向用ini文件,但是AutoLisp的文件处理功能较弱,处理如name=value形式比较复杂
不知是否已经有人实现了类似的功能
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1915个

财富等级: 堆金积玉

发表于 2006-5-13 21:32:55 | 显示全部楼层
可以利用文本文件,具体格式可按自己的喜好决定
下面的函数可以将name=value形式 转换成表,表的处理可是lisp的强项
你在论坛中找找,类似的函数很多

;;将一行字符串转为表,等号分隔
(defun str_to_list2        (str / i one l strl)
  (setq one "")
  (setq strl (strlen str))
  (setq i 1)
  (while (<= i strl)
        (if        (/= "=" (substr str i 1))
          (setq one (strcat one (substr str i 1)))
          (progn
                (setq l (append l (list one)))
                (setq one "")
          )
        )
        (setq i (1+ i))
  )
  (setq l (append l (list (read one))))
  l
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-13 23:06:45 | 显示全部楼层
我参照坛子里的代码修改的
;;把某个section下的所有已关联表的形式返回
(defun read_ini        (ini_filename secion_name  /                ini_filename_id
                 inils              t1           t2                t3
                 t5              tt           n1                assoc_list
                 key_name     key_value           key_value_pair
                 line              list_length  sec_begin
                )
  (if (findfile ini_filename)
    (progn
      (setq ini_filename (findfile ini_filename))
      (progn
        (setq ini_filename_id (open ini_filename "r"))
        (if ini_filename_id
          (progn
            (setq line (read-line ini_filename_id))
            (while (/= line nil)
              (setq inils (cons line inils)
                    line  (read-line ini_filename_id)
              )
            )
            (setq inils (reverse inils))
            (close ini_filename_id)
          )
        )
      )
      (progn
        (setq
          sec_begin (vl-position (strcat "[" secion_name "]") inils)
        )
        (if (/= sec_begin nil)
          (progn
            (setq list_length (vl-list-length inils)
                  sec_end     nil
                  t5              (+ sec_begin 1)
            )
            (while (= sec_end nil)
              (if (< t5 list_length)
                (progn
                  (setq        tt (nth t5 inils)
                        t1 (vl-string-search "[" tt)
                  )

                  (if (/= t1 nil)
                    (setq sec_end t5
                          t5          (+ list_length 1)
                    )
                    (setq t5 (+ t5 1))
                  )
                )
                (setq sec_end list_length)
              )
            )
            (setq n1 sec_begin
            )
            (while (< n1 sec_end)
              (progn
                (setq key_value_pair (nth n1 inils)
                      t2             (vl-string-search "=" key_value_pair)
                )
                (if (/= t2 nil)
                  (progn
                    (setq key_name (substr key_value_pair 1 t2))
                    (setq key_value (substr key_value_pair (+ t2 2)))
                    (setq assoc_list
                           (cons (list key_name key_value)
                                 assoc_list
                           )
                    )
                    (setq n1 (+ n1 1))
                  )
                  (setq n1 (+ n1 1))
                )
              )
            )
          )
          (setq assoc_list nil)
        )
      )
    )
    (setq assoc_list nil)
  )
  assoc_list
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2006-5-14 17:38:52 | 显示全部楼层
方法其实很多
比如每次都要设置,但不希望被别人改(多图)
直接 (setq ...)就可以

这一次的设置,要下一次利用(每个图都要利用)  (多图)
写一个文件也可以(别人可以编辑)
比如文件
10
"A"
1
读入时分配给你的变量就可以(每读一行,再(setq ...))
或者利用注册表.
还有现在很多人不用了:setcfg,也挺有用的.


如果只在当前图(下次也可以利用) (单图)
用vlax-ldata-put    vlax-ldata-get  就比较简单

如果要在多图中都要利用,但这次画图后,不要那些数据了(多图)
试试cad的白板,很简单了:
vl-bb-set  vl-bb-ref
看一下帮助,就象 (setq ..)一样简单


不知道方法的看一下帮助.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6个

财富等级: 恭喜发财

发表于 2006-5-16 19:29:10 | 显示全部楼层
还是用注册表比较方便!读起来也快!
有现成的函数可以用不用另写!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-5-17 08:47:53 | 显示全部楼层
请教aeo,白板的使用有何心得,能否说详细一些?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-5-17 10:12:16 | 显示全部楼层
我也第一次听说“白板”这个词,不过经过试验,我觉得:
白板就是就是一张板,可以记录这次启动CAD后vl-bb-set的数据,在任何时候,任何DWG文件,只要在同一次启动CAD时,板上的数据都存在,随时可以调用vl-bb-ref。但是一旦关闭CAD,再重新启动CAD后,版上所有信息都没有了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-17 12:49:48 | 显示全部楼层
我帮朋友写了一段代码,追求灵活,走了极端,共有50多个可以配置的参数
目前做法是程序本身提供缺省的参数,可以选择用dcl重新配置并把配置信息写到.ini文件中,以后就从这个文件中读配置信息。
我本人不赞成用注册表,因为不够直观,不方便清理
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-18 23:26 , Processed in 0.187663 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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