title: Delphi XE2 - System.Str changed/broken?
body: <p>Something has changed with System.Str in Delphi XE2.  The following procedure :</p>
  
  <pre><code>procedure someProcedure;
  var 
    E:double;
    outString:string;
  begin
    E:=-1.7E+308;
    Str(E:i:j, outString);
  end;
  </code></pre>
  
  <p>Raises an access violation </p>
  
  <p>(exception class $C0000005, access violation at 0x00407318: read of address 0x30303028)</p>
  
  <p>in Delphi XE2 where 'i' and 'j' are whatever integers.  This same code works fine in Delphi 2010 and returns outString = '-1.7E+0308'.  Similar code is used in a few of the TurboPower Orpheus components and it causes the entire IDE to crash on a BEX error.</p>
  
  <p>This is in Win7 64-bit.  Any ideas?</p>
  
  <p>Edit : extra info</p>
  
  <p>This seems to happen only with large negative numbers.  Str seems to generate long strings which break when they exceed ~130 characters.  </p>
  
  <p>Note : this does not break when using only width (where i = some width) </p>
  
  <pre><code>procedure someProcedure;
  var 
    E:double;
    outString:string;
  begin
    E:=-1.7E+308;
    Str(E:i, outString);
  end;
  </code></pre>