Passage d'un objet en OleVariant
Bonjour,
j'ai une class TRate descendant de IDispatch et TAutuObject;
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
Type
IRate = interface(IDispatch)
['{60B5A5D1-5BA9-4D28-BBF9-DD5BE2B83ED2}']
function Get_Minimum: Double; safecall;
procedure Set_Minimum(Value: Double); safecall;
function Get_Maximum: Double; safecall;
procedure Set_Maximum(Value: Double); safecall;
property Minimum: Double read Get_Minimum write Set_Minimum;
property Maximum: Double read Get_Maximum write Set_Maximum;
end;
TRate = class(TAutoObject, IRate)
protected
function Get_Maximum: Double; safecall;
function Get_Minimum: Double; safecall;
procedure Set_Maximum(Value: Double); safecall;
procedure Set_Minimum(Value: Double); safecall;
public
fMaximum,fMinimum:double;
destructor Destroy; override;
end; |
J'ai ensuite g_Rate un tableau d'objet de type TRate. Je dois y accéder via IEnumerator et la Property Current.
Code:
1 2 3 4 5
|
function TRateEnum.Get_Current: OleVariant;
begin
result:= g_Rate[fAxe,fIndex-1];
end; |
Le retour de Get_Current est standardisé car c'est un descendant de IEnumerator, donc retour par OleVariant. J'obtiens une erreur de compilation car le type TRate est incompatible avec OleVariant.
Je suis un peu coincé.