Tipp: Schalte in Indexprüfung in den Projektoptionen an, dann sagt dir Delphi, daß du auf einen Array-Index zugreifen wolltest, welchen es nicht gibt.
Aber die Bereichsprüfung mußt du hier mal auslassen, denn in dieser Code arbeitet absichtlich mit Überläufen, bzw. erspart es sich die Überläufe abzufangen,
denn das macht ja das Byte bereits, welches den Wertebereicht weit genug eingrenzt, im Gegensatz zu den Integern.
PS:
UINT = unsigned integer
unsigned int = Cardinal
signed int = Integer
Aber der Code arbeitet, an dieser Stelle (i), zum Glück mit beiden Varianten.
[edit]
Jetzt stell dir mal vor jemand hat ein ähnliches Problem, findet deinen Thread, aber nun ist die Frage und die Antwort weg
und somit fehlt ihm jetzt die Lösung, aber zumindestens die SBOX ist jetzt korrekt.