Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.57 MB
Время: 0.097 c
1-1101499464
GanibalLector
2004-11-26 23:04
2004.12.12
IncludeTrailingBackslash


4-1099030365
WaS
2004-10-29 10:12
2004.12.12
Определить нandle рабочего стола?


14-1100832492
Думкин
2004-11-19 05:48
2004.12.12
С днем рождения! 19 ноября


6-1096757015
Klopan
2004-10-03 02:43
2004.12.12
Потоки


1-1101751486
Elast
2004-11-29 21:04
2004.12.12
Класс с TList





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский