Правильно не работает.
На самом деле тебе просто достаточно перевести это дело в Long. Тогда сработает. Ну или как-то так:
p1*256^3 + p2*256^2 + p3^256 + p4,
где 46.29.16.200: p1 = 46, p2 = 29, p3 = 16, p4 = 200.
Если у тебя уже есть 4 байта, то код будет такой:
Код:
function IP2Long(b1,b2,b3,b4 : Byte) : Integer;
begin
Result := b1;
Result := (Result Shl 8) + b2;
Result := (Result Shl 8) + b3;
Result := (Result Shl 8) + b4;
end;