Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  3 987

•  TDictionary Custom Sort  6 097

•  Fast Watermark Sources  5 897

•  3D Designer  8 725

•  Sik Screen Capture  6 218

•  Patch Maker  6 650

•  Айболит (remote control)  6 642

•  ListBox Drag & Drop  5 500

•  Доска для игры Реверси  95 539

•  Графические эффекты  6 858

•  Рисование по маске  6 055

•  Перетаскивание изображений  5 032

•  Canvas Drawing  5 397

•  Рисование Луны  5 121

•  Поворот изображения  4 660

•  Рисование стержней  3 284

•  Paint on Shape  2 528

•  Генератор кроссвордов  3 418

•  Головоломка Paletto  2 733

•  Теорема Монжа об окружностях  3 518

•  Пазл Numbrix  2 316

•  Заборы и коммивояжеры  3 004

•  Игра HIP  1 959

•  Игра Go (Го)  1 877

•  Симулятор лифта  2 226

•  Программа укладки плитки  1 944

•  Генератор лабиринта  2 380

•  Проверка числового ввода  2 070

•  HEX View  2 390

•  Физический маятник  2 023

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Как преобразовать IP адрес в число



MS в обстановке секретности готовит ответ фирме mirabilis и ее знаменитому продукту ICQ. Рабочее название новой MS-разработки - IFuQ.

Функция, представленная в этом примере может быть и не очень элегантна, зато работает. Функция получает в качестве параметра строку, содержащую IP адрес, и возвращает строку с IP адресом в виде DWord значения. Результат легко можно проверить командой "Ping".

Обратите внимание, что необходимо добавить "Math" в "Uses" для функции "IntPower";


function IP2HEX(OrgIP:string):string;
var
  // Сохраняем оригинальное значение IP адреса
  OrgVal: string;
  // части оригинального IP
  O1,O2,O3,O4: string;
  // шестнадцатиричные части
  H1,H2,H3,H4: string;
  // Здесь будут собраны все шестнадцатиричные части
  HexIP: string;
  XN: array[1..8] of Extended;
  Flt1: Extended;
  Xc: Integer;
begin

  // Сохраняем в обратном порядке для простого случая
  Xn[8]:=IntPower(16,0);Xn[7]:=IntPower(16,1); Xn[6]:=IntPower(16,2);Xn[5]:=IntPower(16,3);
  Xn[4]:=IntPower(16,4);Xn[3]:=IntPower(16,5); Xn[2]:=IntPower(16,6);Xn[1]:=IntPower(16,7);

  // Сохраняем оригинальный IP адрес
  OrgVal:=OrgIP;
  O1:=Copy(OrgVal,1,Pos('.',OrgVal)-1);Delete(OrgVal,1,Pos('.',OrgVal));
  O2:=Copy(OrgVal,1,Pos('.',OrgVal)-1);Delete(OrgVal,1,Pos('.',OrgVal));
  O3:=Copy(OrgVal,1,Pos('.',OrgVal)-1);Delete(OrgVal,1,Pos('.',OrgVal));
  O4:=OrgVal;

  H1:=IntToHex(StrToInt(O1),2);H2:=IntToHex(StrToInt(O2),2);
  H3:=IntToHex(StrToInt(O3),2);H4:=IntToHex(StrToInt(O4),2);

  // Получаем шестнадцатиричное значение IP адреса
  HexIP:=H1+H2+H3+H4;

  // Преобразуем это большое шестнадцатиричное значение в переменную Float
  Flt1:=0;

  for Xc:=1 to 8 do
  begin
    case HexIP[Xc] of
      '0'..'9': Flt1:=Flt1+(StrToInt(HexIP[XC])*Xn[Xc]);
      'A': Flt1:=Flt1+(10*Xn[Xc]);
      'B': Flt1:=Flt1+(11*Xn[Xc]);
      'C': Flt1:=Flt1+(12*Xn[Xc]);
      'D': Flt1:=Flt1+(13*Xn[Xc]);
      'E': Flt1:=Flt1+(14*Xn[Xc]);
      'F': Flt1:=Flt1+(15*Xn[Xc]);
    end;
  end;
  Result:=FloatToStr(Flt1);
end;





Похожие по теме исходники

Address Book (адресная книга)

Адресная Книга

Проверка числового ввода




Copyright © 2004-2025 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте