Strange WriteBuffer behaviour (Pls ignore previous post)

I tested using IdTCPClient and CommView 3.2 to see the packet sent.

I have two procedure that send the packet:

procedure do1;
var
  a: array [0..1] of byte;
begin
  a[0] := $64;
  a[1] := $32;
  IdTCPClient1.WriteBuffer(a, SizeOf(a));
end;

procedure do2;
var
  a: array of byte;
begin
  SetLength(a, 2);
  a[0] := $64;
  a[1] := $32;
  IdTCPClient1.WriteBuffer(a, SizeOf(a));
end;

From CommView, I can see:

The result of do1 is what I want. The content of packet sent is '6432'.

The result of do2 is NOT what I want. The content of packet sent is
'A443C200'.

--------------------------------------------------------

Anybody could tell me what's wrong in using DynamicArray? Thanks