Главная страница
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.48 MB
Время: 0.027 c
4-1098882908
Yong
2004-10-27 17:15
2004.12.12
Как отловить MouseMove на форме


3-1100590318
denis24
2004-11-16 10:31
2004.12.12
Удаление картинки в поле blob


14-1101237650
GanibalLector
2004-11-23 22:20
2004.12.12
Невозможно найти удаленный сервер


1-1101363417
Mishenka
2004-11-25 09:16
2004.12.12
Дублирование события у компонента


14-1100856187
ИМХО
2004-11-19 12:23
2004.12.12
Почему модераторам не платят за их титаническую работу?