马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
用这个错误函数为什么会改变系统变量errno的值,我检查了下我的程序,把错误函数去掉了就不会改变errno的值,虽然对程序的正常运行没什么影响我还是想知道为什么会这样~!谁知道是哪里问题,或者 xyp1964斑竹来解觉下

- [FONT=courier new]
- ;;; 保存用户系统变量
- ;;;方式 : (CMDLA0)
- (defun CMDLASC0 ()
- (CMDLA0)
- (if (null sc)
- (SETBL)
- )
- )
- (defun CMDLA0 ()
- (defun *error* (msg)
- (princ "错误 : ")
- (princ msg)
- (CMDLA1)
- )
- (SetQ **SysVarNL**
- '("AUNITS" "AUPREC" "ATTDIA"
- "BLIPMODE" "CECOLOR" "CELTYPE"
- "CLAYER" "CMDECHO" "DIMZIN"
- "EXPERT" "HIGHLIGHT" "LUNITS"
- "LUPREC" "OSMODE" "ORTHOMODE"
- "TEXTSTYLE" "PLINEWID" "dimdec"
- "dimadec" "regenmode" "pickbox"
- )
- #time1 (rtos (getvar "cdate") 2 16)
- start-time (substr (rtos (getvar "cdate") 2 16) 7)
- )
- (SetIErr)
- (command "ucs" "")
- (command ".undo" "BE")
- (princ)
- )
- (Defun SetIErr (/ sv)
- (If (= 'LIST (Type *error*))
- (Alert "错误:最后一个(SetIErr)函数没有配对的(ReErr)!")
- (Progn
- (SetQ **svarl** '())
- (ForEach sv **SysVarNL**
- (SetQ **svarl** (Cons (GetVar sv) **svarl**))
- )
- (ForEach sv '("ATTDIA" "BLIPMODE" "CMDECHO"
- "ORTHOMODE" "DIMZIN" "plinewid"
- "regenmode"
- )
- (SetVar sv 0)
- )
- (setvar "ATTREQ" 1)
- (SetVar "EXPERT" 5)
- (setvar "pickbox" 5)
- (setvar "pickadd" 1)
- (setvar "aperture" 5)
- (Defun-Q *error* (st) (ReErr))
- )
- )
- )
- (Defun ReErr ()
- (If (= 'LIST (Type *error*))
- (Progn
- (MapCar 'SetVar **SysVarNL** (Reverse **svarl**))
- (SetQ *error* nil)
- (SetVar "modemacro" ".")
- )
- )
- )
- ;;;------------------------ CMDLA1 -------------------------
- ;;; 恢复用户系统变量
- ;;;方式 : (CMDLA1)
- (defun CMDLA1 ()
- (command ".undo" "E")
- (command "ucs" "")
- (ReErr)
-
- [/FONT]
|