Thema: Delphi Überlauf bei int64

Einzelnen Beitrag anzeigen

Hobbycoder

Registriert seit: 22. Feb 2017
991 Beiträge
 
#1

Überlauf bei int64

  Alt Gestern, 18:20
Hi,

in folgernder function möchte ich aus einer IP-Adresse einen Int64 machen.
Doch beim berechnen des Results kommt es zu einem EIntOverflow / Integerüberlauf. Wie kann das sein? Int64 deckt das doch locker ab.

Delphi-Quellcode:
function IP2Int(value: string): Int64;
var
  s, v1, v2, v3, v4: string;
  i1, i2, i3, i4: Integer;
begin
  Result:=0;
  s:=value;
  if Pos('.', s)>0 then
  begin
    v1:=Copy(s, 1, pos('.', s)-1);
    s:=Copy(s, Pos('.', s)+1, Length(s));
    if Pos('.', s)>0 then
    begin
      v2:=Copy(s, 1, pos('.', s)-1);
      s:=Copy(s, Pos('.', s)+1, Length(s));
      if Pos('.', s)>0 then
      begin
        v3:=Copy(s, 1, pos('.', s)-1);
        V4:=Copy(s, Pos('.', s)+1, Length(s));
      end;
    end;
  end;
  if TryStrToInt(v1, i1) then
    if TryStrToInt(v2, i2) then
      if TryStrToInt(v3, i3) then
        if TryStrToInt(v4, i4) then
        begin
          Result:=i1 * 16777246 + //<----Hier tritt der Überlauf auf.
                  i2 * 65536 +
                  i3 * 256 +
                  i4;
        end;
end;
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat