Search code examples
delphitype-conversiondelphi-xe7

Converting a string to Cardinal / UInt32


I need to convert a string to an unsigned 32 bit integer (Cardinal).

In System.SysUtils unit there are many useful functions like:

  • StrToInt
  • StrToInt64
  • StrToUInt64

But I can't find any StrToCardinal, StrToUInt or StrToUInt32 function.


Solution

  • To follow Andreas Rejbrand idea posted as comment, I would suggest this:

    function StrToCardinal(const S : String) : Cardinal;
    var
        I64 : UInt64;
    begin
        I64 := StrToUInt64(S);
        if (I64 shr 32) <> 0 then
            raise EConvertError.Create('StrToCardinal invalid value');
        Result := Cardinal(I64);
    end;