W whhzkl Unregistered / Unconfirmed GUEST, unregistred user! 2004-04-05 #1 编写COM组件时,创建一个方法:TurnCodeToName, 我想在客户端输入一个字符串,然后调用此方法,我不知道怎么返回一个字符串? 刚学COM, 还不清楚里面的数据类型(如BSTR),望高手指教!!!
编写COM组件时,创建一个方法:TurnCodeToName, 我想在客户端输入一个字符串,然后调用此方法,我不知道怎么返回一个字符串? 刚学COM, 还不清楚里面的数据类型(如BSTR),望高手指教!!!
W whhzkl Unregistered / Unconfirmed GUEST, unregistred user! 2004-04-05 #2 这是接口里的方法: procedure TMyBinLi.TurnCodeToName(const s: WideString; out Result: WideString); begin AdoQuery_Staff.sql.clear; AdoQuery_Staff.SQL.Clear; AdoQuery_Staff.SQL.Add('selectdo ctorName, DepartName from staff wheredo ctorCode = '+ '''' + 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');
这是接口里的方法: procedure TMyBinLi.TurnCodeToName(const s: WideString; out Result: WideString); begin AdoQuery_Staff.sql.clear; AdoQuery_Staff.SQL.Clear; AdoQuery_Staff.SQL.Add('selectdo ctorName, DepartName from staff wheredo ctorCode = '+ '''' + 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');
S shangshang Unregistered / Unconfirmed GUEST, unregistred user! 2004-04-05 #3 试试 var s:widestring; mybingli.turncodetoname('12',s); edit1.text:=s;
W whhzkl Unregistered / Unconfirmed GUEST, unregistred user! 2004-04-05 #4 To shangshang: 不行呀! 报错: Too many actual parameters
R razy Unregistered / Unconfirmed GUEST, unregistred user! 2004-04-05 #7 把返回值设为BSTR, 你把返回值删除了,所以就成了过程!! 另外,你那个RESULT参数不要了!!
W whhzkl Unregistered / Unconfirmed GUEST, unregistred user! 2004-04-07 #8 谢谢大家,我看了别的帖子,知道要另外再设一个Value值, 设为BSTR* ,[out, retval],就可以了, procedure 就成了 function 。 可我想重新注册此 Project1.tlb , 发现不行了,又将里面的名称改了, tlb里出现了提示:‘Hint: typeinfo 'MyBingLi' change to 'MyBingLi_'’ 搞了好长时间, 还是不行,我刚接触COM, 还不太清楚, 望高手指教
谢谢大家,我看了别的帖子,知道要另外再设一个Value值, 设为BSTR* ,[out, retval],就可以了, procedure 就成了 function 。 可我想重新注册此 Project1.tlb , 发现不行了,又将里面的名称改了, tlb里出现了提示:‘Hint: typeinfo 'MyBingLi' change to 'MyBingLi_'’ 搞了好长时间, 还是不行,我刚接触COM, 还不太清楚, 望高手指教