TLDR;
Es sollten doch die Octets auch auf Überlauf überprüft werden, also so ungefähr:
Edit: Ok, DeddyH hatte die Prüfung auch schon vorgeschlagen ...
Code:
function IP2Int(const value: string): Int64;
var
parts: TArray<string>;
i, octet: Integer;
begin
Result := 0;
parts := value.Split(['.']);
if Length(parts) <> 4 then
Exit;
for i := 0 to 3 do
begin
if not TryStrToInt(parts[i], octet) then
Exit;
if (octet < 0) or (octet > 255) then //<== Check this
Exit;
Result := (Result shl 8) + octet;
end;
end;