为什么一个具有socket连接,取数据返回功能的com在其他程序中调试能够正确接受返回信息,但是放到服务器asp页面上去以后无法正确返回结果,总是为空呢??
调用语句如下。
<%
dim m1,m2
set a = Server.CreateObject("QuoteAtl.QData")
a.GetK "AAA",m1,m2 
%>
接口中方法定义GetK(VARIANT *a1, VARIANT *a2, VARIANT *a3)
a1为传入参数,a2,a3为返回参数。
这个com用vc客户程序能够正确得到a2,a3,但是采用如上语句在asp中就总是为空,什么原因呢?各位高人

解决方案 »

  1.   

    附录上com中得到此参数的语句。
    strcpy((LPTSTR)a2,n1); 
    strcpy((LPTSTR)a3,n2);
    n1,n2为两个字符串。
      

  2.   

    我没有在asp中使用过com。你是否忘记,com要初始化环境的CoInitialize(),又或许,com中返回参数必须使用指针,你看你这个m1m2是否如此了?
      

  3.   

    看看:
    set a = Server.CreateObject("QuoteAtl.QData")
    是不是没有执行成功!
      

  4.   

    处于安全原因,asp的限制多多,并不是在其他环境里正确的语句放到ASP里也能执行的。
    你最好检查一下你的服务器asp环境配置,看看是否有允许运行active的选项没有。
      

  5.   

    m1,m2 在com中没有分配内存,应该在com中构造它们,比如在com中用2个静态字符串存储m1和m2的值, 设置好m1,m2的数据类型后把m1和m2中相关成员指向 该静态字符串。
      

  6.   

    另外一个好的解决方法是在ASP中把m1和m2初始化(要足够大来存储返回的结果)
      

  7.   

    com中方法调用有时间延迟也就是说调用com 中方法会等待一会儿才能得到结果,那么这里com有无阻塞asp页面执行功能?也就是说asp页面是否调用com接口等它返回才会继续执行???