H hwj_wj123 Unregistered / Unconfirmed GUEST, unregistred user! 2009-01-05 #1 方法function TestMethod: IDispatch;返回的类型为iDispatch实际上里边是记录集,在delphi中怎么读取出来。
H hanpengshan_00 Unregistered / Unconfirmed GUEST, unregistred user! 2009-01-05 #2 强制转换成最终的记录接口类型,楼主,难道是你存进去的,取出来还不知道类型吗?真的搞笑呀你IRecord = interface(IDispatch)...end; 比如你存的时候是IRecordfunction TestMethod: IDispatch;把返回的IDispatch强制转化成IRecord,很基本的面向对象知识就像func(button); //button是tbutton类型一个实例func(obj: TObject); //这里定义成TObject,这个时候你想向下转换,你别说你不会?那我也没招了
强制转换成最终的记录接口类型,楼主,难道是你存进去的,取出来还不知道类型吗?真的搞笑呀你IRecord = interface(IDispatch)...end; 比如你存的时候是IRecordfunction TestMethod: IDispatch;把返回的IDispatch强制转化成IRecord,很基本的面向对象知识就像func(button); //button是tbutton类型一个实例func(obj: TObject); //这里定义成TObject,这个时候你想向下转换,你别说你不会?那我也没招了
H hwj_wj123 Unregistered / Unconfirmed GUEST, unregistred user! 2009-01-05 #3 我是在通过delphi调用vc写的一个asp组件中的一个读取数据的函数。
H hwj_wj123 Unregistered / Unconfirmed GUEST, unregistred user! 2009-01-05 #4 delphi学的不精通,还是不会,请明示,万分感激呀。
H hwj_wj123 Unregistered / Unconfirmed GUEST, unregistred user! 2009-01-05 #5 delphi部分原文: unit PASSRSLib_TLB; function TPassRsObj.GetData: IDispatch; begin Result := DefaultInterface.GetData; end; VC中源码: STDMETHODIMP CPassRsObj::GetData(LPDISPATCH *ppRecordset) { _RecordsetPtr pSet; ...... pSet->Clone(adLockOptimistic)->QueryInterface(IID_IDispatch, (void**) ppRecordset); return S_OK; }
delphi部分原文: unit PASSRSLib_TLB; function TPassRsObj.GetData: IDispatch; begin Result := DefaultInterface.GetData; end; VC中源码: STDMETHODIMP CPassRsObj::GetData(LPDISPATCH *ppRecordset) { _RecordsetPtr pSet; ...... pSet->Clone(adLockOptimistic)->QueryInterface(IID_IDispatch, (void**) ppRecordset); return S_OK; }
S szf Unregistered / Unconfirmed GUEST, unregistred user! 2009-06-19 #6 uses ADODB;var ds: TADODataSet; begin ds := TADODataSet.Create(nil); try ds.Recordset := PassRsObj.GetData as RecordSet; ....象普通DataSet那样使用ds finally ds.Free(); end;
uses ADODB;var ds: TADODataSet; begin ds := TADODataSet.Create(nil); try ds.Recordset := PassRsObj.GetData as RecordSet; ....象普通DataSet那样使用ds finally ds.Free(); end;