Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.03.2012, 04:54   #1
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию Pascal. Сравнить две строки вида *.*.*.* (2.10.3.5 например)

Может кто-нибудь быстрый способ знает? Лень разбирать по частям..
StrComp не подходит, т.к. 20.1.1.1 < 3.1.1.1

Заранее благодарен
TwiX вне форума Ответить с цитированием
Старый 13.03.2012, 11:15   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

если я правильно понял ваш вопрос, то Вам поможет функция LongIP
взятая отсюда - Torry - Delphi Procedures and Function Library > Categories > Internet

после модификации:
Код:
function LongIP(IP : string) : Longword;
var
  IPaddr   : array[1..4] of integer;
  temp     : string;
  // res      : Longword;
  i        : integer;
begin
  temp := ip;
  temp := temp + '.';
  try
    for i := 1 to 4 do
    begin
      ipaddr[i] := strtoint(copy(temp,1,pos('.',temp) - 1));
      delete(temp,1,pos('.',temp));
    end;
  except
     // result := 'Invalid IP address.';
     result := 0;
     exit;
  end;

  result := (ipaddr[1] * $FFFFFF) + ipaddr[1] +
           (ipaddr[2] * $FFFF)   + ipaddr[2] +
           (ipaddr[3] * $FF)     + ipaddr[3] +
           (ipaddr[4]);
end;

Последний раз редактировалось Serge_Bliznykov; 13.03.2012 в 11:21.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.03.2012, 10:06   #3
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Сейчас сел, посмотрел.. Мне кажется, что должно быть вот так:
Код:
result := (ipaddr[1] * $FFFFFF)+
           (ipaddr[2] * $FFFF)+
           (ipaddr[3] * $FF)+
           (ipaddr[4]);
Разве нет?
TwiX вне форума Ответить с цитированием
Старый 17.03.2012, 10:18   #4
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Излишние движения у вас, коллеги:
Код:
var A: array[0..3] of byte;
    B: Longword absolute A;
вам поможет достичь результата намного быстрее. Только заполнять массив придётся в обратном порядке
Правильно поставленная задача - три четверти решения.

Последний раз редактировалось DiemonStar; 17.03.2012 в 10:39.
DiemonStar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнить две таблицы Diane_T Microsoft Office Excel 1 28.09.2011 11:06
сравнить две строки. С++ Демик Помощь студентам 12 03.04.2011 21:54
Программа должна оставить всего две строки! [Pascal ABC] Mirt Помощь студентам 1 07.12.2010 08:00
Сравнить две переменные Delphinchik PHP 1 06.12.2010 20:12
сравнить две строки maxs7 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 01.10.2010 05:27