在特定的d处停止例程
是否可以控制Lisp例程在经过特定日期后甚至不运行后停止工作如果用户将计算机的日期向后推?
非常感谢 像这样的。如果时间尚未过期且系统时间未更改,则此函数返回T。但您可以使用比通过“setenv”函数设置环境变量更秘密的方法。例如,将数据写入注册表或某些密文文件。
当然用户可以每天设置相同的日期,但这并不方便。这也是可以设想的。
(defun TimeControl(Days / Pass)
(if(not(getenv "FirstDate"))
(setenv "FirstDate"(itoa(fix(getvar "CDATE"))))
); end if
(if(not(getenv "LastDate"))
(setenv "LastDate"(getenv "FirstDate"))
); end if
(setq lDate(atoi(getenv "LastDate"))
fDate(atoi(getenv "FirstDate"))
cDate(fix(getvar "CDATE")))
(cond
((> cDate lDate)
(alert "Your system time has been changed.\n Bue, bue bad guy... ")
); end condition #1
((>(- cDate fDate)Days)
(alert "Your time has been expired.\n Call me baby. ")
); # end condition #2
(T (setq Pass T)
(setenv "LastDate"(itoa(fix(getvar "CDATE"))))
); end condition #3
); end cond
Pass
); end of TimeControl
非常感谢,非常感谢。
我想知道更多关于注册表处理字符串的方式的信息。
那你能给我推荐点什么吗?
当做
迈克尔 写入注册表:
(vl-registry-write "HKEY_CURRENT_USER\\Software\\MyApp" "Day left" "30")
从reg读取:
(vl-registry-read "HKEY_CURRENT_USER\\Software\\MyApp" "Day left")
k
谢谢克鲁格。
那么注册表的(setenv)和您的之间有什么区别呢。。
(vl注册表写入“HKEY\U CURRENT\U USER\\Software\\MyApp”“Day left”“30”)
还有第二个是从(getenv)和您的。。。
(vl注册表读取“HKEY\U CURRENT\U USER\\Software\\MyApp”“还剩一天”)
非常感谢。 你需要这个做什么? :lol: 两种方法相同。sava数据到注册表。
setenv,getenv-将数据保存到“autocad环境”(你在那里制造了大量数据,我不喜欢这样)
vl。。将数据保存到您的特定位置-我更喜欢这样
k 我有一些不使用注册表和任何文件的好主意。FAS文件(编译的LSP文件)文件可以使用vlisp编译功能在每次运行时使用新数据重新编译。我会尽量在有更多时间的时候实施。我明天要去俄罗斯出差,所以不早于周六。 这可能有用。这很聪明
k
页:
[1]
2