title: Theres a UIntToStr in delphi to let you display UINT64 values, but where is StrToUInt to allow user to input 64 bit unsigned values?
body: <p>I want to convert a large 64 bit value from decimal or hex string to 64 bit UINT64 data type.  There is a UIntToStr to help converting the UINT64 to string, but no way to convert a 64 bit integer to a unsigned value, as a string. That means integer values greater than 2**63 can not be represented in decimal or hex, using the RTL.   This is normally not a big deal, but it can happen that a user needs to input a value, as an unsigned integer, which must be stored into the registry as a 64 bit unsigned integer value.</p>
  
  <pre><code>procedure HandleLargeHexValue;
  
  var
   x:UINT64;
  begin
  
    x := $FFFFFFFFFFFFFFFE;
  
    try
    x := StrToInt('$FFFFFFFFFFFFFFFF'); // range error.
    except
      x := $FFFFFFFFFFFFFFFD;
    end;
  
    Caption := UintToStr(x);
  
  end;
  </code></pre>
  
  <p><strong>Update</strong>  Val now <em>works</em> fine in  Delphi XE4 and up.  In XE3 and below Val('$FFFFFFFFFFFFFFFF') works but not Val('9223372036854775899').  As Roeland points out below in Quality Central 108740: System.Val had problems with big UInt64 values in decimal until Delphi XE4.</p>