Registriert seit: 22. Feb 2017
991 Beiträge
|
Überlauf bei int64
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.
|