コメントしたように、バイトと整数の両方としてアクセスするためにデータを移動する必要はありません。
元のバイト配列は、型キャストによって整数の配列としてアクセスできます。
type
TArrayInteger = array of Integer;
...
for i := 0 to Pred(Length(source)) div SizeOf(Integer) do
WriteLn(TArrayInteger(source)[i]);
多くの場合、これらの型キャストをクラスに隠します。XE3 では、文字列、バイト、整数などの単純な型のクラス ヘルパーを宣言する可能性があります。たとえば、TStringHelper を参照してください。同じことが単純型の配列にも当てはまります。
レコード ヘルパーを使用した例を次に示します。
type
TArrayByte = array of Byte;
TArrayInteger = array of Integer;
TArrayByteHelper = record helper for TArrayByte
private
function GetInteger(index : Integer) : Integer;
procedure SetInteger(index : Integer; value : Integer);
public
property AsInteger[index : Integer] : Integer read GetInteger write SetInteger;
end;
function TArrayByteHelper.GetInteger(index: Integer): Integer;
begin
Result := TArrayInteger(Self)[index];
end;
procedure TArrayByteHelper.SetInteger(index: Integer; value: Integer);
begin
TArrayInteger(Self)[index] := value;
end;
次のように使用します。
Var
source : TArrayByte;
i : Integer;
begin
SetLength(source,8);
for i := 0 to 7 do
source[i] := i;
for i := 0 to 1 do
WriteLn(Format('%8.8X',[source.AsInteger[i]]));
ReadLn;
end.