Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.654 Beiträge
Delphi 12 Athens
|
AW: Überlauf bei int64
Gestern, 22:02
Mein Vorschlag wäre
Delphi-Quellcode:
function IPv4StrToInt( const s: string): Cardinal;
procedure RaiseInvalidIP;
begin
raise Exception.Create(' Invalid IP');
end;
var
lStrOctets: TArray< string>;
lOctets: array[0..3] of Cardinal;
i: integer;
begin
lStrOctets := s.Split([' .']);
if Length(lStrOctets) <> 4 then
RaiseInvalidIP;
for i := Low(lStrOctets) to High(lStrOctets) do
begin
if not TryStrToUInt(lStrOctets[i], lOctets[i]) then
RaiseInvalidIP
else if not (lOctets[i] in [0..255]) then
RaiseInvalidIP;
end;
Result := lOctets[0] shl 24 or lOctets[1] shl 16 or lOctets[2] shl 8 or lOctets[3];
end;
Detlef "Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
|