title: Are there any difference between array and packed array in Delphi?
body: <p>In C/C++ you always have</p>
  
  <pre><code>SizeOf(array[N] of T) = N * SizeOf(T);
  </code></pre>
  
  <p>In Pascal/Delphi you can use 'packed array' to be sure that the above assert is true, but does 'packed' specifier have any practical value for arrays in Delphi? I can't create an example of 'unpacked' array, the arrays seems always 'packed':</p>
  
  <pre><code>type
    A = array[0..2] of Byte;
    B = array[0..99] of A;
    C = packed record
      C1, C2, C3: Byte;
    end;
    D = array[0..99] of C;
  
  procedure TForm10.Button1Click(Sender: TObject);
  begin
    Assert(SizeOf(A) = 3);
    Assert(SizeOf(B) = 300);
    Assert(SizeOf(D) = 300);
  end;
  </code></pre>
  
  <p>(The C/C++ structures and Delphi records are different - they can be 'unpacked' so that the size of the structure is greater than the sum of fields' sizes due to the fields' alignment.)</p>