明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: highflybird

[【高飞鸟】] 【飞鸟集】LISP.net?在LISP中调用C++,ARX函数以及汇编语言

  [复制链接]
发表于 2011-7-28 09:08 | 显示全部楼层
还请给出个具体的例子,调用EXE.
 楼主| 发表于 2011-7-28 09:21 | 显示全部楼层
回复 xiaxiang 的帖子

在我的activeX那篇帖子里面给出了一个例子。
发表于 2011-11-7 17:54 | 显示全部楼层
本帖最后由 690994 于 2011-11-7 18:29 编辑
highflybird 发表于 2011-7-27 21:13
回复 Jack_PC 的帖子

参见这个帖子。


楼主,看了你有关二进制打包的贴子,读写试了下可以,真想不到LISP还能这样,
由于不懂VBS,有个问题请教:
如何将一个字符串直接写二进制字符文本文件和将二进制字符转成文本字符串,而不用从文本中读入再打操作。
我试着改将loadfromfile改WRITE和READ,却是不成功,提示“ADODB.Stream: 在此环境中不允许操作”
或“Microsoft VBScript 编译器错误: 缺少语句”
发表于 2011-11-8 12:11 | 显示全部楼层
690994 发表于 2011-11-7 17:54
楼主,看了你有关二进制打包的贴子,读写试了下可以,真想不到LISP还能这样,
由于不懂VBS,有个问题请 ...

你把生成的二进制字符串作为一个字符串变量就可以了啊。
但是要提醒的一点是:
如果字符串太长,LISP不接受的。
发表于 2011-11-8 17:58 | 显示全部楼层
highflybir 发表于 2011-11-8 12:11
你把生成的二进制字符串作为一个字符串变量就可以了啊。
但是要提醒的一点是:
如果字符串太长,LISP不 ...

我的意思是象下面函数,我将filename当作一个字符变量而不是一个文件名和路径,
stream.LoadFromFile FileName 改为stream.writetext stringi得不到返回二进制值
本意是想将文本变成二进制,不用写到文件后再读再转换。
另外的WriteBinary函数,我不要它写至文件中去,是希望它将二进制流转回文本,改了试过也不行,
请版主指点
(defun ReadBinary (string / str wsObj)
  (if (setq wsObj (vlax-create-object "ScriptControl"))
    (progn
      (vlax-put wsObj "language" "VBS")
      (setq str
       "Function ReadBinary(string)
Const adTypeBinary = 1这个改文本格式也不行
Dim stream, xmldom, node
Set xmldom = CreateObject(\"Microsoft.XMLDOM\")
Set node = xmldom.CreateElement(\"binary\")
node.DataType = \"bin.hex\"
Set stream = CreateObject(\"ADODB.Stream\")
stream.Type = adTypeBinary
stream.Open
stream.LoadFromFile FileName 改为stream.writetext string
node.NodeTypedValue = stream.Read
stream.Close
Set stream = Nothing
ReadBinary = node.Text
Set node = Nothing
Set xmldom = Nothing
End Function"
      )
      (vlax-invoke wsObj 'ExecuteStatement str)
      (setq str (vlax-invoke wsObj 'run "ReadBinary" string))
      (vlax-release-object wsObj)
      str
    )
  )
)
(defun WriteBinary (buffer / wsObj str)
  (if (setq wsObj (vlax-create-object "ScriptControl"))
    (progn
      (vlax-put wsObj "language" "VBS")
      (setq str
       "Function WriteBinary(Buf)
Const adTypeBinary = 1
Const adSaveCreateOverWrite = 2
Dim stream, xmldom, node
Set xmldom = CreateObject(\"Microsoft.XMLDOM\")
Set node = xmldom.CreateElement(\"binary\")
node.DataType = \"bin.hex\"
node.Text = Buf
Set stream = CreateObject(\"ADODB.Stream\")
stream.Type = adTypeBinary
stream.Open
stream.write node.NodeTypedValue
;stream.saveToFile FileName, adSaveCreateOverWrite去了这句
stream.Close
Set stream = Nothing
WriteBinary=node.Text加上这句
Set node = Nothing
Set xmldom = Nothing
        End Function"
      )
      (vlax-invoke wsObj 'ExecuteStatement str)
      (setq str(vlax-invoke wsObj 'run "WriteBinary" buffer))
      (vlax-release-object wsObj)
      str
    )
  )
)

发表于 2011-11-8 18:41 | 显示全部楼层
不明白你说的意思: readbinary是把二进制文件读成文本流,writebinary是把文本流写成二进制文件。
写文件不一定要通过文本文件才写的,也可以字符串或者其他文本流写。
是不是你搞反了意思?
你可以到网上搜索一下这个方面的话题。
发表于 2011-11-8 19:16 | 显示全部楼层
highflybir 发表于 2011-11-8 18:41
不明白你说的意思: readbinary是把二进制文件读成文本流,writebinary是把文本流写成二进制文件。
写文件 ...

我的意思是想将上面两个函数改一下,一个能将字符转为二进制文本流,
另一个是将二进制文本流还原成字符。即是
“字符xxx" 变成 “ffd8ffe000104a46494”再还原成 “字符xxx”的过程
发表于 2012-2-6 03:56 | 显示全部楼层
楼主啊楼主 我不的不所你很伟大,,,
发表于 2012-2-26 23:05 | 显示全部楼层
无限崇拜ING!
发表于 2012-4-3 12:05 | 显示全部楼层
很可惜,64位的不支持DynamicWrapperX注册,版本有方法解决不?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-2 11:44 , Processed in 0.325841 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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