From 6e07eb8b4f57b35ff58f54b9f1529f95aaee4789 Mon Sep 17 00:00:00 2001 From: Francisco Zanini <37146925+zaniniflz@users.noreply.github.com> Date: Sun, 9 Jun 2024 13:46:01 -0300 Subject: [PATCH] Fixes serialization of enumerations from dataset (#755) Co-authored-by: Francisco Zanini --- sources/MVCFramework.Serializer.Commons.pas | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/sources/MVCFramework.Serializer.Commons.pas b/sources/MVCFramework.Serializer.Commons.pas index 8221a7f3..f85961c6 100644 --- a/sources/MVCFramework.Serializer.Commons.pas +++ b/sources/MVCFramework.Serializer.Commons.pas @@ -1166,7 +1166,15 @@ procedure MapDataSetFieldToRTTIField(const AField: TField; const aRTTIField: TRt // general enumerations else if (aRTTIField.FieldType.TypeKind = tkEnumeration) then begin - TValue(AField.AsInteger).ExtractRawData(PByte(Pointer(AObject)) + aRTTIField.Offset); + var Value: TValue; + case aRTTIField.FieldType.TypeSize of + SizeOf(Byte): Value := TValue.From(AField.AsInteger); + SizeOf(Word): Value := TValue.From(AField.AsInteger); + SizeOf(Integer): Value := TValue.From(AField.AsInteger); + else + raise EMVCException.CreateFmt('Unsupported enumeration type for field %s', [AField.FieldName]); + end; + Value.ExtractRawData(PByte(Pointer(AObject)) + aRTTIField.Offset); end // plain integers else