明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1781|回复: 6

大加快帮我看看这个while语句

[复制链接]
发表于 2003-11-13 16:52:00 | 显示全部楼层 |阅读模式
他怎么会告诉我一个参数类型错误呢?
(while (= Flag 1)
        (progn
            (setq Data         (read-line fp)
                   temp         (VD:2dPoints->3dPoints (read Data))
                   ptList              (cons temp ptList)
            )
            (if(not Data)      (setq Flag -1) )
        )
  )

错误: 参数类型错误: stringp nil
发表于 2003-11-13 17:08:00 | 显示全部楼层
這樣試試.
(while (= Flag 1)
     (setq Data  (read-line fp)
            temp  (VD:2dPoints->3dPoints (read Data))
            ptList  (cons temp ptList))
     (if(not Data)
       (setq Flag -1) )
  )
to 樓主, 你給的程序片斷別人很難給你指出錯誤的. 發方便可以把整個程序放上來看看
发表于 2003-11-13 17:52:00 | 显示全部楼层
看提示应该是变量Data为空造成的。

建议:这种问题可以用VLISP编辑器中的跟踪功能,跟踪看是那里出了问题,否则以后遇到了,你还是无法判断
 楼主| 发表于 2003-11-13 18:19:00 | 显示全部楼层
其实我的目的是从一个文本文件读入数据,因为可能不知道数据有多少行,所以另外设置一个值来控制逻辑判断,我把逻辑判断式改为(<= Flag 11)(假设只读入11行数据,Flag初值为1,我发现是可以的,能够读取得到数据。但象上面那样,加载或运行时就不行。假如是你,你会怎么写这段程序?请大家多提高贵意见
发表于 2003-11-13 18:28:00 | 显示全部楼层
没有要求,能怎么写?
写出来的东西跟你就没有任何关系。只说FLAG做逻辑判断,但是是判断什么呢?应该站在别人的立场想想,别人都知道什么,你知道的东西不一定我们都知道,所以是无法写什么东西。

而且按你说的,flag初始为1,逻辑判断为(<= flag 11),但你循环中有这样一句(setq flag -1)这样是一个死循环,怎么可以呢,说明你做了一些改动,但你却没说,让别人怎么明白。

其实你原来的方法也是可以的,不过在(read data)时也应该作判断,否则当DATA为空时,你要到最后才做判断,这时已经读过了,而且为空,所以就出错了。
之前也没说是读文本文件,冒冒然就来一堆代码,还有很多变量也不知道怎么来的,所以是无法回答你的。
至于我的做法,你看看我刚才回答别人读文本文件的那个帖子,正好有这样的循环。。。
 楼主| 发表于 2003-11-13 19:08:00 | 显示全部楼层
这样就对了,是data造成的,当有数据时,返回字符串,但遇到结束时,返回为nil
。但是还是问题,我还没有搞清楚这样怎么就行了。
(while (= Flag 1)
      (if (setq Data (read-line fp))
          (setq
              temp   (VD:2dPoints->3dPoints (read Data))
              ptList (cons temp ptList)
          )
          (setq Flag 0)
      )
发表于 2003-11-13 19:21:00 | 显示全部楼层
因为对data做了判断,如果(read-line fp)返回空,即data为空,这时有if判断,就不会执行下面的
   (setq
       temp   (VD:2dPoints->3dPoints (read Data))
       ptList (cons temp ptList)
   )
这句了,所以就不会执行(read data),就不会出错了。

注:(setq data (read-line fp)),如果(read-line fp)返回空,使得data为空,(setq ...)语句也将返回空,即if的判断条件为空(即假),所以就发生了跳转
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-27 06:19 , Processed in 0.196763 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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