请教一个判断字符串是不是表的问题
;问题,这里获得的PIT都是字符串,比如"(1234 56)"<br/>;如果是"1234"还好办,直接转换成数值就可以<br/>;如果是(1234 56)也好办,(setq xx (car pit))<br/>;现在就是判断得到的pit到底是什么把我卡住了。<br/>;请高人指点,谢谢! <p>另外,我想把这句加进去:<br/>(setq pit (getint "\n请输入数值或选取实体读取数值:"))<br/>也就是说我最终想实现的功能是:如果输入一个数字,则返回该数值;如果选取块,则读取该块的PIT值,如果该值为一个坐标,则取X值。<br/>我知道<br/>(initget 1 "XZ ")<br/>(setq pit (getint "\n请输入数值 [或选择实体(XZ)]<XZ>:"))<br/>(cond ((or (= pit "XZ") (null pit)) (c:hqpit)))<br/>是可以实现加进去的,但觉得这样最后在执行程序时需要多操作一次(输入XZ回车或者直接回车),能不直接让程序提示输入数值,同时鼠标又变成可点选状态呢?</p><p></p> <p>可以用type函数</p><p>由于匆忙,2楼的没看</p>(if (listp (read pit)) (progn
;表
) (progn
;非表
))
<p>感谢版主,这个问题明白了。</p><p>2楼的问题能帮帮忙吗?</p> 也感谢3楼的兄弟,我回去看看type函数。 <p>还有个问题,现在PIT是一个字符串,它不是表也不是数值,我运行下面的语句时就报错了。很明显这里if判断之后执行的都是(setq xx (rtos pit))。怎么能把"(565.00 42.81)"外面的"去掉让它变成一个表呢?</p><p> (if (listp (read pit))<br/> (setq xx (car pit))<br/> (setq xx (rtos pit))<br/> )</p><p>; 错误: 参数类型错误: consp "(565.00 42.81)"<br/>很明显这里if判断之后执行的都是(setq xx (rtos pit))</p> <p>7楼的问题自己已经弄明白了,read就已经OK了。</p><p>现在剩下2楼的问题,请前辈们指点,谢谢!</p> 有高人能解决一下2楼的问题么? 有人能帮我解决一下2楼的问题吗?
页:
[1]