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.
Ein Therapeut entspricht 1024 Gigapeut.