找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 702|回复: 5

[求助] [求助]:高手帮忙修改一下程序,按退格键,可以在命令行同时显示删除过程

[复制链接]
发表于 2005-12-25 16:41:20 | 显示全部楼层 |阅读模式

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

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

×
程序如下:
(defun c:ss ()
(prompt "\n输入字符:")
(setq srzdo nil)
(setq tjhn t)
(while        tjhn
  (setq dbd (grread t 4 2))
  (setq bmz (car dbd))
  (setq BL-hn1 (cadr dbd))
  (cond        ((and (= bmz 2) (= BL-hn1 8))
         (cond ((= (type srzdo) 'STR) (setq srzdo (substr srzdo 1 (- (strlen srzdo) 1)))))
        ) ;|按退格键。|;
        ((and (= bmz 2) (/= BL-hn1 13))
         (prompt (chr BL-hn1))
         (cond ((/= (type srzdo) 'STR) (setq srzdo (chr BL-hn1)))
               (t (setq srzdo (strcat srzdo (chr BL-hn1))))
         )
        )
        ((or (= bmz 11) (and (= bmz 2) (= BL-hn1 13))) (setq tjhn nil))
  )
)
(princ (strcat "\n输入值为:" srzdo))
(princ)
)
例如:输入888sss后,按3次退格键,返回值为888,但按退格键时,在命令行如何同时显示删除过程呢?
谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 488个

财富等级: 日进斗金

发表于 2005-12-25 22:08:09 | 显示全部楼层
看一下 ascii表,backspace 是什么.
别忘了和空格键结合,
princ就行了.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-26 08:13:27 | 显示全部楼层
谢谢!不知如何使用princ才能达到我的目的?
以下程序增加一个函数grtext作为演示,我的目的是:在命令行也像状态行(左下方)一样,按退格键,能显示删除已输字符的过程。
(defun        c:ss ()
  (prompt "\n输入字符:")
  (setq srzdo nil)
  (setq tjhn t)
  (while tjhn
   (setq dbd (grread t 4 2))
   (setq bmz (car dbd))
   (setq BL-hn1 (cadr dbd))
   (cond ((and (= bmz 2) (= BL-hn1 8))
          (cond ((= (type srzdo) 'STR) (setq srzdo (substr srzdo 1 (- (strlen srzdo) 1)))))
          (grtext -1 srzdo)
         ) ;|按退格键,即backspace键。|;
         ((and (= bmz 2) (/= BL-hn1 13))
          (prompt (chr BL-hn1))
          (cond        ((/= (type srzdo) 'STR) (setq srzdo (chr BL-hn1)))
                (t (setq srzdo (strcat srzdo (chr BL-hn1))))
          )
          (grtext -1 srzdo)
         )
         ((or (= bmz 11) (and (= bmz 2) (= BL-hn1 13))) (setq tjhn nil))
   )
  )
  (princ (strcat "\n输入值为:" srzdo))
  (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-26 08:36:55 | 显示全部楼层
我也在做这个类似TEXT命今的输入方式.
也碰到这个问题,特别是对 "\r"这个输出的显示特别感冒
因为princ要显示的话,要调用"\r" 或者 "\n"做为结束才到显示出来
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-26 08:48:38 | 显示全部楼层
谢谢!不知如何使用princ才能达到我的目的?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-26 09:22:26 | 显示全部楼层
这个是我的,不过还不能用,不过应该快了
[php]
(defun c:tt ()
  (setq ret nil)
  (setq str "")
  (setq strall "")
  (setq prompt-str  "\r输入文本:")
  (princ prompt-str)
  (while (null ret)
    (setq mid (grread))
    (cond
      ((= (car mid) 2)
       (if (= 13 (cadr mid))
         (progn
           (if (= strmid (chr 13))
             (progn (setq ret t))
             (progn ;|新的一行|;
               (setq strall (strcat strall str)
                     str    ""
               )
               (princ "\n")
               (princ prompt-str)
             )
           )
         )
         (if (= 8 (cadr mid))
           (progn
             
             (setq str (strcat(substr str 1 (- (strlen str) 1)) ""))
             (princ "\010")
             ;(princ (strcat  prompt-str str))
             
           )
           (progn
             (setq strmid (chr (cadr mid)))
;;;             (princ "\r")
             (setq str (strcat str strmid))
             (princ strmid)
             (set_tile "prg" str)
           )
         )
       ) ;_if
        ;_if
      ) ;_

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-28 23:44 , Processed in 0.174036 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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