PS: Wenn du den Code genau so 1:1 mit NativeUInt oder Cardinal kompilierst, wie in #2 erwähnt, also fröhlich Signed und Unsigned vermischst, dann könnte dir der Code spätestens in einem "neuen" Projekt ab Delphi 11 (oder 10) vielleicht wunderschön knallen, beim nun standardmäßig aktivem RangeCheck.