Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.022 c
4-1098544849
DL
2004-10-23 19:20
2004.12.12
Как получить уникальную информацию о компьютере


3-1100496152
AdmSasha
2004-11-15 08:22
2004.12.12
поиск по маске в базе


14-1101379427
Кирилл
2004-11-25 13:43
2004.12.12
Руководство


4-1099132569
sirin
2004-10-30 14:36
2004.12.12
восстановление файлов


1-1101640437
ja
2004-11-28 14:13
2004.12.12
Как создать папку на удаленной машине?




   Наверх