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.
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;