Y
y9y
Unregistered / Unconfirmed
GUEST, unregistred user!
对不起,问过类似的问题,但仍然无法解决项目里情况。
我需要把已有的一个项目改为COM程序,OUT-PROC SERVER
要传输参数里,有很多是复杂的RECORD,而且是类型怪怪的,如
type
TResTare = packed record
ResT : array[1..4] of real48;
ResC : array[1..4] of real48;
Cap : array[1..4] of real48;
TP : array[1..4] of String[20];
end;
请问我如何才能实现:
GET_RESTARE: VARIANT;
SET_RESTARE(VARIANT);
如果是用VARIANTARRAY,好象要再定义一个:
TYPE
T_NORMAL_RESTARE
ResT1 : float;
....
ResT4 : float
ResC1 : float;
...
ResC4 : float
....
end;
为了实现数据传递,要先把TResTare格式的变量换成T_Normal_ResTare
以便能在Type Lib Editor里定义为COM接受格式的RECORD,然后再把
T_Normal_ResTare转为0Variant,做参数传递,在使用这些数据时,因为
得到的是VARIANT,还要再把它还原回TResTare才行。
这么麻烦?是否有好办法?我的程序里,有几十种不同类型的RECORD要传递,
怎么办阿?
我需要把已有的一个项目改为COM程序,OUT-PROC SERVER
要传输参数里,有很多是复杂的RECORD,而且是类型怪怪的,如
type
TResTare = packed record
ResT : array[1..4] of real48;
ResC : array[1..4] of real48;
Cap : array[1..4] of real48;
TP : array[1..4] of String[20];
end;
请问我如何才能实现:
GET_RESTARE: VARIANT;
SET_RESTARE(VARIANT);
如果是用VARIANTARRAY,好象要再定义一个:
TYPE
T_NORMAL_RESTARE
ResT1 : float;
....
ResT4 : float
ResC1 : float;
...
ResC4 : float
....
end;
为了实现数据传递,要先把TResTare格式的变量换成T_Normal_ResTare
以便能在Type Lib Editor里定义为COM接受格式的RECORD,然后再把
T_Normal_ResTare转为0Variant,做参数传递,在使用这些数据时,因为
得到的是VARIANT,还要再把它还原回TResTare才行。
这么麻烦?是否有好办法?我的程序里,有几十种不同类型的RECORD要传递,
怎么办阿?