delphi怎么读取iDispatch类型的记录集,在线等(200分)(200)

  • 主题发起人 hwj_wj123
  • 开始时间
H

hwj_wj123

Unregistered / Unconfirmed
GUEST, unregistred user!
方法function TestMethod: IDispatch;返回的类型为iDispatch实际上里边是记录集,在delphi中怎么读取出来。
 
强制转换成最终的记录接口类型,楼主,难道是你存进去的,取出来还不知道类型吗?真的搞笑呀你IRecord = interface(IDispatch)...end;
比如你存的时候是IRecordfunction TestMethod: IDispatch;把返回的IDispatch强制转化成IRecord,很基本的面向对象知识就像func(button);
//button是tbutton类型一个实例func(obj: TObject);
//这里定义成TObject,这个时候你想向下转换,你别说你不会?那我也没招了
 
我是在通过delphi调用vc写的一个asp组件中的一个读取数据的函数。
 
delphi学的不精通,还是不会,请明示,万分感激呀。
 
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;
}
 
uses ADODB;var ds: TADODataSet;
begin
ds := TADODataSet.Create(nil);
try ds.Recordset := PassRsObj.GetData as RecordSet;
....象普通DataSet那样使用ds finally ds.Free();
end;
 
也想了解此问题。
 
顶部