var
ht:Thttprio;
it1:Ifilews;
info:integer;
begin
try
    ht:=THTTPRIO.Create(nil);
    //it1:=getIfilews(true,'',ht);
    it1:=getifilews;   ===================>如果是线程,这里会出错
    info:=it1.isfileExists('e:\12.txt');
 if info=0 then
    begin
      self.Caption :='文件存在';
    end
    else
    begin
      self.Caption:='文件不存在';
    end;
 finally
   ht.Free;
 end;
end;
//就以上这段代码,
//在主界面ok,线程中这些代码就出现Abstract Error的错误
//怎么找都找不到原因,到底为什么?

解决方案 »

  1.   

    从你的表述上看,这个问题与WebService没有关系.我想问问,你在你的测试线程中去实现了Execute这个方法了吗?
      

  2.   

    你们这些捣蛋鬼.人家是很认真问问题的,不是说笑的哈.请妖哥,把这个问题好好解释.
    如果解释不清,就扣你10000分.
    解释好了老冯给你一颗LOLLIPOP.
      

  3.   

    TThread是抽象类, 请LZ看看在你的测试线程中没有去实现EXECUTE?
      

  4.   

    我把上面那一段拷贝到线程的EXECUTE了
      

  5.   

    把涉及到的webservice那几行注掉看看
    getifilews里面是什么??
    另: 线程里面就没有caption了
      

  6.   

    在线程中使用,代码要加上  CoInitialize与  CoUnInitialize
    //线程开始
      CoInitialize(nil);
    try
    ...//创建RIO
    ...//调用finally
      CoUnInitialize;
    end;
      

  7.   

    ====
    在Create和Destory里我做了CoInitialize(nil); CoUnInitialize;
    ====
    GetIfilews是获得接口的方法,由WSDL import 生成。
    ====
    现在错误如下:
    //在主界面ok,线程中这些代码就出现Abstract Error的错误网络上查是说将接口实例化,但是我不知道该怎么改正这个错误。
    各位达人能不能给个更清晰的说法啊?
      

  8.   

    主要问题就在GetIfilews里面了,

    GetIfilews是获得接口的方法,由WSDL import 生成  不是很明白
      

  9.   

    我感觉就是GetIfilews这个函数里面的问题,就看里面做了些什么内容了,应该和函数处理有关系的
      

  10.   

    哎~~
    GetIfilews 没有问题。是我的问题。这样才ok
          CoInitialize(nil);
       try
          ht:=THTTPRIO.Create(nil);
          ht.URL:='http://../webservicetest/Filews.dll/soap/ifilews';
          ht.WSDLLocation:='http://../webservicetest/Filews.dll/wsdl/ifilews';
          ht.Service:='Ifilewsservic'
          ht.Port:='ifilewsPort';
      
          it1:=ht as Ifilews;
          it1.xxx(...)
       finally
            CoUnInitialize;
       end;
    归根到底还是自己对WebService传输过程不了解。谢谢大家关注。