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

Reply via email to