编写COM组件时,创建一个方法:TurnCodeToName, 我想在客户端输入一个字符串,然后调用此方法,我不知道怎么返回一个字符串?刚学COM, 还不清楚里面的数据类型(如BSTR),望高手指教!!!

解决方案 »

  1.   

    数据类型看看帮助,一般的string类型定义为olestr
    strReturn := serverclass.urncodetoname(string) ;
      

  2.   

    这是接口里的方法:procedure TMyBinLi.TurnCodeToName(const s: WideString;
      out Result: WideString);
    begin
      AdoQuery_Staff.sql.clear;
      AdoQuery_Staff.SQL.Clear;
      AdoQuery_Staff.SQL.Add('select DoctorName, DepartName from staff where DoctorCode = '+ '''' + s + '''');
      AdoQuery_Staff.Prepared;
      AdoQuery_Staff.ExecSQL;
      AdoQuery_Staff.Open;
      Form1.Edit1.Text := AdoQuery_Staff.Fieldbyname('DoctorName').AsString;
      Result := AdoQuery_Staff.Fieldbyname('DoctorName').AsString;
    end;为什么客户端调用却不行:Edit1.text:=MyBingLi.TurnCodeToName('12');
      

  3.   

    我知道应是: Function, 不是Procedure, 可怎么改过来呢????
      

  4.   

    谢谢大家,我看了别的帖子,知道要另外再设一个Value值, 设为BSTR* ,[out, retval],就可以了, procedure 就成了 function 。 可我想重新注册此 Project1.tlb , 发现不行了,又将里面的名称改了, tlb里出现了提示:‘Hint: typeinfo 'MyBingLi' change to 'MyBingLi_'’  搞了好长时间, 还是不行,我刚接触COM, 还不太清楚, 望高手指教