找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 735|回复: 1

[求助] 借用某大侠的注册码程序,为什么第二次还需要输注册码?

[复制链接]
发表于 2015-5-28 20:04:24 | 显示全部楼层 |阅读模式

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

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

×

程序如下:
(defun UseLimit                (/  FIND_SERIALNUMBER           regNumber     num    regnum reg_path      *error*        )
   (defun *error* (msg / ent count)
     (princ)
   ) ;_ 结束defun
   (defun FIND_SERIALNUMBER (DRIVE / FILSYS VAL)
     (setq FILSYS (vlax-create-object "Scripting.FileSystemObject"))
     ;;(vlax-dump-object FILSYS t)
     (setq VAL (vlax-invoke FILSYS "GetDrive" DRIVE))
     ;;(vlax-dump-object VAL t)
     (setq VAL (vl-catch-all-apply
                 'vlax-get
                 (list VAL "SerialNumber")
               ) ;_ 结束vl-catch-all-apply
     ) ;_ 结束setq
     (vlax-release-object FILSYS)
     (if        (vl-catch-all-error-p VAL)
       (setq VAL NIL)
       VAL
     ) ;_ 结束if
   ) ;_ 结束defun

   (setq reg_path "HKEY_CURRENT_USER\\Software\\autodesk\\temp")
   (setq regNumber (vl-registry-read reg_path "注册码"))
   (if
     (/=        regNumber;有这个判断函数为什么判断不出来?
        (itoa
           (fix
             (+ (/ (atoi
                     (rtos (atoi (rtos (FIND_SERIALNUMBER "C:"))))
                   ) ;_ 结束atoi
                   3.14
                ) ;_ 结束/
                1357926480
             ) ;_ 结束+
           ) ;_ 结束fix
;;;注册码=申请码/3.14+1357924680取整
        ) ;_ 结束itoa
     ) ;_ 结束/=
      (progn
        (alert
          (strcat
            "请注册!"
          ) ;_ 结束strcat
        ) ;_ 结束alert
        (setq num (rtos (FIND_SERIALNUMBER "C:")))
        (setq regnum
               (itoa
                 (fix (+ (/ (atoi (rtos (atoi num))) 3.14) 1357924680))
               ) ;_ 结束itoa
        ) ;_ 结束setq
;;;注册码=申请码/3.14+1357924680取整
       (textscr)
        (princ
          (strcat "您的申请码为: " num)
        ) ;_ 结束princ
        (setq regNumber (getstring "\n请输入注册码:"))
        (if (/= regNumber regnum)
          (progn
            (alert "注册码无效!")
            (exit)
          ) ;_ 结束progn
          (progn
            (vl-registry-write reg_path "注册码" regnum)
            (alert "您已成功注册!")
          ) ;_ 结束progn
        ) ;_ 结束if
        T
      ) ;_ 结束progn
   ) ;_ 结束if
   (princ)
) ;_ 结束defun

借用大侠的注册码程序,我改了点注册码算法,不知道为什么第一次,输入注册码,后正常,注册码也正确的保存在了注册表里,可是第二次运行,依然需要输入注册码,程序里明明有if判断,为什么断不出来?还有就是visual lisp里监视时,各个参数均为nil,不知道为什么,哪位大侠帮着看看,谢谢。


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2015-5-29 08:56:51 | 显示全部楼层
不好意思,发现低级错误了。计算数值写错了。不过再问一下,如果改成*3.14就无法运行,是不是因为数值太大,超10位数了?lisp最大数值是多少?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-24 12:28 , Processed in 0.368373 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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