From 98a7fe6204d5d2a966ae5497b9ebf76325b82b06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Van=20Canneyt?= Date: Tue, 17 Dec 2024 17:44:57 +0100 Subject: [PATCH] * TValue.From with buffer and typeinfo. Patch from Lipinast Lekrisov --- packages/rtl-objpas/src/inc/rtti.pp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/rtl-objpas/src/inc/rtti.pp b/packages/rtl-objpas/src/inc/rtti.pp index 9a76f5fe1b..82cec22f1d 100644 --- a/packages/rtl-objpas/src/inc/rtti.pp +++ b/packages/rtl-objpas/src/inc/rtti.pp @@ -208,6 +208,7 @@ type { Note: a TValue based on an open array is only valid until the routine having the open array parameter is left! } generic class function FromOpenArray(constref aValue: array of T): TValue; static; inline; {$endif} + class function From(aTypeInfo: PTypeInfo; ABuffer: Pointer): TValue; static; class function FromOrdinal(aTypeInfo: PTypeInfo; aValue: Int64): TValue; static; {inline;} class function FromArray(aArrayTypeInfo: PTypeInfo; const aValues: array of TValue): TValue; static; class function FromVarRec(const aValue: TVarRec): TValue; static; @@ -3675,6 +3676,12 @@ begin Result.FData.FElSize := el.DataSize; end; +class function TValue.From(aTypeInfo: PTypeInfo; ABuffer: Pointer): TValue; + +begin + TValue.Make(ABuffer, PTypeInfo(aTypeInfo), Result); +end; + class function TValue.FromOrdinal(aTypeInfo: PTypeInfo; aValue: Int64): TValue; {$ifdef ENDIAN_BIG} var