Delphi-Quellcode:
for i := 0 to 255 do
begin
aR[i] := (R - i) shr 1 + i;
aG[i] := (G - i) shr 1 + i;
aB[i] := (B - i) shr 1 + i;
end;
Angenommen B sei 0 und i sei 255.
Dann wird aus
aB[i] := (B - i) shr 1 + i;
ein
aB[255] := (0 - 255) shr 1 + 255;
oder ausgerechnet
aB[255] := -2147483521;
(meint zumindest mein PascalScript dazu).
Und das passt beim besten Willen nicht in ein Byte.
Ansonsten Debugger starten und dort beim Auftreten des Fehlers nachschauen, um welche Werte es sich beim Auftreten des Fehlers handelt.
Die Bereichsprüfung bezieht sich halt nicht nur auf die korrekte Einhaltung der Indexwerte bei 'nem Array, sondern auch um die korrekte Zuweisung von Werten zu Variabeln.