现在的位置: 首页 > 综合 > 正文

如何通过js或者vb调用delphi的com组件

2013年11月18日 ⁄ 综合 ⁄ 共 1235字 ⁄ 字号 评论关闭

由于工作需要,需要将delphi编写的com通过网页的方式进行交互,但是如何交互呢,这就是一个大难题,通过查找资料以及查看vb的代码,发现如下的方式:

1、vb

<html>
<script type="text/vbscript">
option explicit

dim info, key, data   

set info = CreateObject("User.UserInfo")

key = "12345678"
data = "123"
data = info.TestData(key)//通过返回值
MsgBox data
data = info.GetData(key, data)
key = info.Data //通过属性
MsgBox key
</script>
</html>

2、js

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>TestAxObj</title>
</head>
<body style="background-color:whitesmoke; margin:5px">
<form method="post" action="">
    <object id="tc1" width="200px" height="20px" style="background-color:red;"
       classid="CLSID:65E6BE73-2814-4B52-850A-939786D009BC">
    </object>

    <script type="text/javascript" language=javascript>
        var tc1 = document.getElementById("tc1");
        var s = "test";
        var out = "";
        var data1 = "";
        tc1.GetData(s, out);
        data1 = tc1.Data;//属性的方式
        alert("属性" + data1);
        s = tc1.TestData(data1);
        alert(s);//返回值方式
    </script>
</body>
</html>

这里的调用是针对于上篇文章的com编写方法写的调用脚本,大家可以参考来看。

其实,这里还有一个问题是没有解决的,本来想通过js脚本实现,delphi中var类型的参数的功能,实现一个数据的改变,例如在

        var out = "";
        tc1.GetData(s, out);

中想实现out值的更改,但是没能实现,所以将out的值传递给其属性,然后访问属性获得结果。
目前js可以使用的方法是通过属性和返回值的方式来处理类似的情况。

特意说明在vb中没有这种限制,可以使用这种方式的值的改变。

如果谁有这方面的资料可以共享哦。

 

抱歉!评论已关闭.