找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 721|回复: 8

[求助] [求助]:怎样定义,才能输入空格

[复制链接]
发表于 2004-8-7 18:47:02 | 显示全部楼层 |阅读模式

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

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

×
用(setq GG(getstring "\n规格:"))
怎样才能输入空格.如输入:机 257
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 6530个

财富等级: 富甲天下

发表于 2004-8-7 19:39:34 | 显示全部楼层
这样:
(setq GG(getstring t "\n规格:"))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-8-7 20:23:07 | 显示全部楼层
谢谢,ll_j
我还个问题:
当我用规格来,读取data.dat文件内数据时,如果不带空格我就能读出来,如:机257 1 2.587,将得的我要的数据,2.587。带了空格就不能读了,如:机 257 2.587,就不到我的数据2.587。
请指点一下思路。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2004-8-8 08:37:01 | 显示全部楼层
使用 read-line 可以读取一整行,读出的结果是字符串,如果有多项,可以使用以下语法处理成表:
  1. (read (strcat "(" 字符串 ")"))
复制代码

不过表中除数字串外,其他项均为符号SYM,不再是字符串,好再使用VLisp函数 vl-prin1-to-string 可以转换,如:
  1. 命令: (strcat (car (read "(机 23 454)")) "as")
  2. ; 错误: 参数类型错误: stringp 机
  3. 命令: (strcat (vl-prin1-to-string (car (read "(机 23 454)"))) "as")
  4. "机as"
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-8-8 09:03:22 | 显示全部楼层
(defun C:test (/ ff a line)
  (setq data nil)
  (setq ff (open "c:\\data.ini" "r"))
  (setq a (strcase (getstring t "\n请输入规格:")))
  (while (setq line (read-line ff))
    (if        (= (read line) (read a))
      (progn
        (setq data (read (read-line ff)))
      )
    )
  )
  (close f)
  (princ data)
  (princ)
)

以上我是试编的程序,不知错在什么地方.请指点.
我的data.ini格式为:
机 258
2.587
机 259
3
机 260
5.68

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

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2004-8-8 09:16:32 | 显示全部楼层
用 read-line 和 getstring 得到的都是字符串,不需要 read 即可进行比较,所以“(if (= (read line) (read a))”一句可以直接使用“(if (= line a)”试试。
对包含空格的字符串,如果不是表达为“表”的形式(如"(a b c)"),直接使用 read 只保留最前面的一项,后面都截除,所以无法判断。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-8-8 10:02:53 | 显示全部楼层
ll_j,按你说的改成(if(= (read a))还是不行.
如果在(setq data (read (read-line ff)))后加入(setq b  (read data)),提示; 错误: 参数类型错误: stringp 0.889
我用(numberp data),返回T,不是字串。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2004-8-8 12:35:27 | 显示全部楼层
是“(if (= line a)”,不是“(if(= (read a))”,这里 Line 是字符串,read 以后当然不是字符串。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-8-8 17:53:59 | 显示全部楼层
行了,再三谢谢你的指点,和学习你的仔细.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-27 10:16 , Processed in 0.190267 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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