Thema: Delphi Überlauf bei int64

Einzelnen Beitrag anzeigen

Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.654 Beiträge
 
Delphi 12 Athens
 
#4

AW: Überlauf bei int64

  Alt 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
  Mit Zitat antworten Zitat