On 06.07.2019 02:10, Martok wrote:
In that case, unlike what was previously said in this thread, this should simply
work:
generic function TStreamHelper.ReadEnum<T>(out aEnum: T): Boolean;
begin
if Read(aEnum, SizeOf(aEnum)) <> SizeOf(aEnum) then
Exit(False)
else begin
Result := (Ord(aEnum) >= Ord(Low(T))) and (Ord(aEnum) <= Ord(High(T)));
end;
end;
Ord(aEnum) for invalid enumeration values is undefined ;)
Ondrej
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel