aicr317 发表于 2013-11-14 12:23:53

错误: 此类型的 LISP 值不能强制转换成 VARIANT: -32755

本帖最后由 aicr317 于 2013-11-14 21:02 编辑

如题,这个问题怎么解决。。。。以前在2004上写的程序完美运行,在07或更高版就不行了。。。


(defun rw(file l_dat / stream rtn)
(setq stream (vlax-get-or-create-object "ADODB.Stream"))
(vlax-put-property stream 'Type 1)
(vlax-invoke stream 'Open)
(if l_dat
    (progn
      (setq l_dat (vlax-safearray-fill (vlax-make-safearray 17 (cons 0 (1- (length l_dat)))) l_dat))
      (vlax-put-property stream 'Position 0)
      (vlax-invoke-method stream 'Write l_dat)
      (vlax-invoke-method stream 'SaveToFile file 2)
    )
    (progn
      (vlax-invoke-method stream 'LoadFromFile file)
      (vlax-put-property stream 'Position 0)
      (setq rtn (vlax-safearray->list (vlax-variant-value (vlax-invoke-method stream 'Read (vlax-get stream 'Size)))))
    )
)
(vlax-release-object stream)
rtn
)

NJZX05 发表于 2013-11-14 12:27:35

本帖最后由 NJZX05 于 2013-11-14 12:40 编辑

能不能把程序写整一点啊,都没法调试了

aicr317 发表于 2013-11-14 12:29:04

恩是的,不知道什么原因,生成的值都不对!

aicr317 发表于 2013-11-14 13:58:57

补充一句,读取文件生成的值不对,但是输出没有问题。

aicr317 发表于 2013-11-14 21:03:35

NJZX05 发表于 2013-11-14 12:27 static/image/common/back.gif
能不能把程序写整一点啊,都没法调试了

补全。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

aicr317 发表于 2013-11-16 13:52:55

顶起,看看有没有高手解决下,感谢

NJZX05 发表于 2013-11-19 10:18:03

错误: 此类型的 LISP 值不能强制转换成 VARIANT: -32755

本帖最后由 NJZX05 于 2013-11-19 10:21 编辑

你连接的是什么数据库啊,数据库里只有一个表吗?结果不正确的原因是不是(vlax-put-property stream 'Position 0)需要重定位啊。

我用access调试了一下,发现程序运行是正常的啊,没有你所说的,不能强制转换的问题啊。

NJZX05 发表于 2013-11-20 10:22:25

本帖最后由 NJZX05 于 2013-11-20 11:02 编辑

看了你的这个贴子http://bbs.mjtd.com/thread-108428-1-1.html,得到了启发,由于CAD2008中仅二进制位的后8位有效,因此,用nzl1116的办法,可以很好的解决此问题,也就是在读取完毕后,加上一句:
(setq rtn (mapcar '(lambda (Item)(rem Item 256)) rtn))
这样就能很好地解决了,而经测试,如果用大于255的数据代入的话,程序也不会让写

页: [1]
查看完整版本: 错误: 此类型的 LISP 值不能强制转换成 VARIANT: -32755