如何将COM组件(VC做的)返回的OleVariant类型变量转为指定类型? ( 积分: 50 )

  • 主题发起人 主题发起人 cherryjing
  • 开始时间 开始时间
C

cherryjing

Unregistered / Unconfirmed
GUEST, unregistred user!
type
PExample = ^TExample;
TExample = record
a:integer;
b:word;
end;


var
ov:OleVariant;//COM组件返回的OleVariant类型变量定义
example: TExample;
begin
... // 调用COM取得ov
example.a := PExample(ov)^.a;
example.b := PExample(ov)^.b;
end;
编译出错提示为Invalid typecast

刚刚加入,分数不多,还望不吝赐教!
 
type
PExample = ^TExample;
TExample = record
a:integer;
b:word;
end;


var
ov:OleVariant;//COM组件返回的OleVariant类型变量定义
example: TExample;
begin
... // 调用COM取得ov
example.a := PExample(ov)^.a;
example.b := PExample(ov)^.b;
end;
编译出错提示为Invalid typecast

刚刚加入,分数不多,还望不吝赐教!
 
Variant与record不能赋值.
 
已知组件返回的就是该结构的东西,就是想知道怎么把它取出来
原导入文件是这样的:
...

AnalystResultStruct = packed record
fFaultDistance: Single;
nFaultAttrib: SYSINT;
nFaultCode: SYSINT;
fFaultRX: array[0..2, 0..1] of Single;
fVIabc: array[0..2, 0..1, 0..7] of Single;
fFaultZlA: Single;
fFaultZlT: Single;
bstrFaultDes: WideString;
bstrFaultLineName: WideString;
faultTime: DataTimeInfo;
end;


// *********************************************************************//
// Interface: IFaultAnalystServer
// Flags: (4544) Dual NonExtensible OleAutomation Dispatchable
// GUID: {75DF167B-A111-4963-8F7E-74FF38F6658F}
// *********************************************************************//
IFaultAnalystServer = interface(IDispatch)
['{75DF167B-A111-4963-8F7E-74FF38F6658F}']
procedure Init(const filePath: WideString; const fileName: WideString); safecall;
procedure Analyst(out lFaults: Integer); safecall;
procedure GetAnalystResult(lIndex: Integer; var pResult: OleVariant); safecall;
procedure GetSwitchChangeInfo(sort: ESortType; out pArray: PSafeArray); safecall;
end;
...
其中procedure GetAnalystResult(lIndex: Integer; var pResult: OleVariant); safecall;里的pResult返回的就是AnalystResultStruct的内容,我就想知道怎么取出来?
 
后退
顶部