Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.12;
Скачать: CL | DM;

Вниз

Подскажите пожалуйста. правильно ли я делаю?   Найти похожие ветки 

 
Ilya___   (2004-11-19 12:03) [0]

Подскажите пожалуйста. правильно ли я делаю?
Мне нужно из целочисленного со знаком (Integer) получить
(Целочисленное без знака). Я написал такую функцию.

function IntIPToIPValue(const IntIP: Integer): Cardinal;
begin
 Result := Low(Result) + IntIP;
end;

Правильно ли я делаю, или есть для этого какаято другая функция ?


 
Anatoly Podgoretsky ©   (2004-11-19 12:11) [1]

ABS


 
DiamondShark ©   (2004-11-19 12:25) [2]


> Result := Low(Result) + IntIP;

Что в переводе на русский означает
Result := 0 + IntIP;

;-)

Правильно, конечно, но проще
X := Y;
где X: Cardinal, а Y: Integer.


 
Ilya___   (2004-11-19 12:28) [3]

Нет мне нужно для IP адреса из
-1073732954
должен получиться такой
3221234342


 
Anatoly Podgoretsky ©   (2004-11-19 12:30) [4]

DiamondShark ©   (19.11.04 12:25) [2]
Не так, а так Result := неизвестно что + IntIP;


 
DiamondShark ©   (2004-11-19 12:34) [5]


> Ilya___   (19.11.04 12:28) [3]
> Нет мне нужно для IP адреса из
> -1073732954
> должен получиться такой
> 3221234342

var
i: Integer;
n: Cardinal;
begin
i := -1073732954;
n := Cardinal(i);


> Anatoly Podgoretsky ©   (19.11.04 12:30) [4]

Всё-таки, ноль.


 
Ilya___   (2004-11-19 12:42) [6]

И ещё хотел спросить.

Я получаю из IP адреса например 192.0.34.166
целочисленное со знаком -1073732954, используя
для этого свою функцию.
А может для этого нужно использовать inet_addr("192.0.34.166")?
Но тогда получается другой результат.


 
DiamondShark ©   (2004-11-19 14:05) [7]


> А может для этого нужно использовать inet_addr("192.0.34.166")?
> Но тогда получается другой результат.

А справку Пушкин должен читать.

All Internet addresses are returned in IP"s network order (bytes ordered from left to right).


 
Anatoly Podgoretsky ©   (2004-11-19 14:31) [8]

DiamondShark ©   (19.11.04 12:34) [5]
Вообще то да, необратил внимание на Low, тогда естественен вопрос зачем прибавлять ноль, почему бы не написать 0+0+0+IP


 
Megabyte-ceercop ©   (2004-11-19 15:01) [9]

Проблемы тут с интерпритацией старшего (знакового) бита.
Замени тип переменной IntIP из integer в dWord. тогда у тя всё само собой уложится правильно.

Или создай временную переменную dWord.

var
T : dWord;

begin
...
T := IntIP //тут в T окажется нужное тебе значение.



Не проверял, но теория такая.



Страницы: 1 вся ветка

Текущий архив: 2004.12.12;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.033 c
4-1098931561
DelphiN!
2004-10-28 06:46
2004.12.12
Свернуть абсолютно все окна


14-1101232184
Yanis
2004-11-23 20:49
2004.12.12
ОдЁжа


1-1101895430
denis24
2004-12-01 13:03
2004.12.12
listbox->event


1-1101370809
спринт
2004-11-25 11:20
2004.12.12
Стиль XP


3-1100510736
Брат
2004-11-15 12:25
2004.12.12
Создание кросс-отчета