From 9c0423b3a4f5998b4bcad3d193584b1b5918a16c Mon Sep 17 00:00:00 2001 From: svenbarth Date: Sun, 20 Aug 2017 18:27:49 +0000 Subject: [PATCH] + add TValue.AsInterface to retrieve a COM style interface again git-svn-id: trunk@36969 - --- packages/rtl-objpas/src/inc/rtti.pp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/rtl-objpas/src/inc/rtti.pp b/packages/rtl-objpas/src/inc/rtti.pp index 9786981047..6860907414 100644 --- a/packages/rtl-objpas/src/inc/rtti.pp +++ b/packages/rtl-objpas/src/inc/rtti.pp @@ -85,6 +85,7 @@ type function AsBoolean: boolean; function AsCurrency: Currency; function AsInteger: Integer; + function AsInterface: IInterface; function ToString: String; function IsType(ATypeInfo: PTypeInfo): boolean; inline; function TryAsOrdinal(out AResult: int64): boolean; @@ -814,6 +815,13 @@ begin raise EInvalidCast.Create(SErrInvalidTypecast); end; +function TValue.AsInterface: IInterface; +begin + if Kind <> tkInterface then + EInvalidCast.Create(SErrInvalidTypecast); + Result := PInterface(FData.FValueData.GetReferenceToRawData)^; +end; + function TValue.ToString: String; begin case Kind of