Delphi-Quellcode:
procedure Test();
var
TestPatch: array [0..16] of Byte;
Test74: array [0..16] of Byte;
I: Integer;
begin
(** )
case Bar of
2:
(**)
for I := 0 to 15 do
if not Odd(I) then // (I mod 2) = 0
Test74[I] := TestPatch[I + 1]
else
Test74[I] := TestPatch[I - 1];
(** )
end;
end;
(**)
end;
Letzendlich wird dort nichts anders gemacht als 8 'Words' aus TestPatch mit vertauschtem Lo-/Hi-Byte in Test74 zu kopieren.
Wobei das letzte Mitglied beider Arrays ausgelassen wird (scheint nur ein Platzhalten zu sein).
Wenn man die Datentypen ändern würde, dann könnte man es so schreiben:
Delphi-Quellcode:
procedure Test();
type
TTest = packed record
case Integer of
1: (
Bytes: array [0..16] of Byte);
2: (
Words: array [0..7] of Word{;
Reserved: Byte});
end;
var
TestPatch: TTest;
Test74: TTest;
I: Integer;
begin
for I := 0 to 7 do
Test74.Words[I] := Swap(TestPatch.Words[I]);
end;
Was effizienten/lesbaren Code ergibt...