无痕 发表于 2007-8-15 14:46:00

<p>xxvbs升级到第二版.</p><p>版本: v2 完善数组返回值.完善对wscript. 的判断 . ret支持表,字符,符号格式.</p><p>请看第1,2楼更新内容.</p><p>xxjs v1版本(支持jscript已经出来了,还再调试一下)</p><p>js版本的改写比我想像中的要麻烦一点.主要是: js的数组和vbs的数组不一样.更像vl的安全数组.</p>

无痕 发表于 2007-8-16 00:47:00

<p>不好意思,v2版本的数组返回值处理函数对多维数组还是有点问题.v2.2版本解决了.</p><p>更新到v2.2版本</p>

ivde 发表于 2007-8-16 07:09:00

本帖最后由 作者 于 2007-8-16 17:43:05 编辑

楼主讲解下如何取得返回值吧,参数传递是VBS Lisp 直接头痛的问题,谢谢
下面的返回String,多维数组如何处理?
  (setq    *wsc (vla-GetInterfaceObject
           (vlax-get-acad-object)
           "ScriptControl"
         )
  )
  (vlax-put-property *wsc "language" "vbs")
  (vlax-invoke
    *wsc
    'ExecuteStatement
    "Function   test() 
       Dim ss, re, rv
       ss = inputbox(\"将两个连续字符替换为一个,输入测试字符:\")
       Set re = New RegExp
       re.Pattern = \"(.+)\\1\"
       re.Global = True
       re.IgnoreCase = True
       re.MultiLine = True
       rv = re.Replace(ss,\"$1\")
       test = rv 
  End   Function"
  )
  (vlax-invoke *wsc 'eval "test")

龙龙仔 发表于 2007-8-17 08:05:00

(setq STR<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Function&nbsp;&nbsp; GetValue()&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim&nbsp;&nbsp; arrX(3 , 3 , 2)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim&nbsp;&nbsp; i,j,k,ans1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For&nbsp;&nbsp; i = 0 To 3&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For j = 0 To 3<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For k = 0 To 2 <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; arrX (i , j , k) = i * j + k<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GetValue = arrX&nbsp; <br/>&nbsp; End&nbsp;&nbsp; Function<br/>&nbsp; For Each present In GetValue<br/>&nbsp; ans=ans &amp; \" \" &amp; present<br/>&nbsp;Next<br/>"<br/>)<br/>(XXVBS STR "ans")<br/>;;返回: " 0 0 0 0 0 1 2 3 0 2 4 6 0 3 6 9 1 1 1 1 1 2 3 4 1 3 5 7 1 4 7 10 2 2 2 2 2 3 4 5 2 4 6 8 2 5 8 11"<br/>;|<br/>有那麼複雜嗎?<br/>" 0 0 0 0 0 1 2 3 0 2 4 6 0 3 6 9<br/>&nbsp; 1 1 1 1 1 2 3 4 1 3 5 7 1 4 7 10<br/>&nbsp; 2 2 2 2 2 3 4 5 2 4 6 8 2 5 8 11"<br/>&nbsp; |;<br/>

狂刀无痕 发表于 2007-8-17 12:45:00

<p></p><p>为保持返回值的数据类型,我用了一个递归函数来处理。</p><p>分别取各数组项,如果子项是表,递归处理。</p>

ivde 发表于 2007-8-17 16:38:00

函数形式唯一的不足就是 string 的长度受 AuotLisp 的限制,不能运行太长的 VBS,解决的方法是用读文件形式<br/>

i-Stone 发表于 2007-8-18 17:43:00

本帖最后由 作者 于 2007-8-18 17:43:53 编辑 <br /><br /> <p>VBS返回值是如何传递给LISP变量的?能否指点一二</p>

无痕 发表于 2007-8-18 22:46:00

<p>VBS返回值是如何传递给LISP变量的?能否指点一二</p><p>没有传递,不是vb-&gt;lisp. 直接用(vla-eval 就可以返回啊</p>

无痕 发表于 2007-8-19 16:49:00

<p><font color="#dd0000" size="6">将jscript移植到lisp</font></p><p></p><p><a href="http://bbs.mjtd.com/forum.php?mod=viewthread&tid=62386">http://bbs.mjtd.com/forum.php?mod=viewthread&tid=62386</a></p>

oyxx1023 发表于 2007-8-21 11:57:00

版主什么时候发布源码.
页: 1 2 3 [4] 5 6 7 8
查看完整版本: [原创] !将vbscript移植到lisp!