Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как автоматичиски получить следующий IP ? 
:(
    Опции темы
BeeMaster
Дата 26.7.2009, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 3.4.2008

Репутация: нет
Всего: нет



как организовать чтобы программа сама автоматически выдавала следующий IP ???

допустим IP имеет вид 142.000.101.255 и нам надо получить 142.0.102.0
или
142.255.255.255->143.0.0.0

IP может быть любой из возможных!!!

пытался что-то сам написать но вообще ничего не получилось =(


помогите пожалуйста. очень очень надо!

PM MAIL   Вверх
Keeper89
Дата 26.7.2009, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 9
Всего: 58



А где алгоритм с которым проблемы?


--------------------
PM MAIL WWW   Вверх
BeeMaster
Дата 26.7.2009, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 3.4.2008

Репутация: нет
Всего: нет



Код

procedure TS.Button2Click(Sender: TObject);
var
i:integer;
ii:integer;
ips:string;
begin

ips:=edit3.Text;
for i:=100 to 254 do
if ii<>3 then
if copy(ips,Length(ips)-2,3) = inttostr(i) then
begin
ips:=ips+inttostr(i+1);
delete(ips,Length(ips)-4,2);
ii:=3;
edit2.Text:=ips;
end;


но так очень большой гемор делать. тут естественно текст. тоесть из текста выдерается 3 последние символа и проверяется числа это или нет. если это числа то заменяет последние 3 цифры на последние 3 цифры+1. но если получается что число то 255 надо чтобы перекинула на следующий порядок!


но этот способ просто <removed by moderator> какой геморный. и ошибок получается много

помогите пожалуйста!  smile 

Это сообщение отредактировал(а) Rrader - 27.7.2009, 03:29
PM MAIL   Вверх
Keeper89
Дата 26.7.2009, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 9
Всего: 58



Почему не заменить 1 Edit на 4 SpinEdit и не иметь подобных проблем? Или нужно "именно так"?


--------------------
PM MAIL WWW   Вверх
BeeMaster
Дата 26.7.2009, 23:18 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 3.4.2008

Репутация: нет
Всего: нет



я новичек и даже не знаю возможностей SpinEdit. по этому использую edit

мне без раздницы можно хоть что использовать лишбы доставая от туда информация была в виде IP

Это сообщение отредактировал(а) BeeMaster - 26.7.2009, 23:25
PM MAIL   Вверх
COOLHack
Дата 26.7.2009, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 281
Регистрация: 8.2.2008

Репутация: 1
Всего: 0



Кидаем на форму Edit и нопочку. По нажатию на кнопку копируем это:

Код

procedure TForm1.Button1Click(Sender: TObject);
var
a : string;
i1,i2,i3,i4 : string;
s1,s2,s3,s4 : integer;
begin
a := Form1.Edit1.Text;
i1 := copy(a,0,3);
if pos('.',i1) <> 0 then i1 := copy(i1,0,pos('.',i1)-1);
i2 := copy(a,pos('.',a)+1,3);
if pos('.',i2) <> 0 then i2 := copy(i2,0,pos('.',i2)-1);
a := copy(a,pos('.',a)+1,length(a)-pos('.',a)+1);
a := copy(a,pos('.',a)+1,length(a)-pos('.',a)+1);
i3 := copy(a,0,3);
if pos('.',i3) <> 0 then i3 := copy(i3,0,pos('.',i3)-1);
i4 := copy(a,pos('.',a)+1,3);
if pos('.',i4) <> 0 then i4 := copy(i4,0,pos('.',i4)-1);
s1 := strtoint(i1);
s2 := strtoint(i2);
s3 := strtoint(i3);
s4 := strtoint(i4);
if s4 < 255 then begin
  inc(s4);
end else begin
  s4 := 0;
  if s3 < 255 then begin
    inc(s3);
  end else begin
    s3:=0;
    if s2 < 255 then begin
      inc(s2);
    end else begin
      s2 := 0;
      if s1 < 255 then begin
        inc(s1);
      end else begin
        ShowMessage('Больше быть не может :) //');
        s4 := 255;
        s3 := 255;
        s2 := 255;
      end;
    end;
  end;
end;
i1 := inttostr(s1);
i2 := inttostr(s2);
i3 := inttostr(s3);
i4 := inttostr(s4);
Form1.Edit1.text := i1+'.'+i2+'.'+i3+'.'+i4;
end;


P/S/ Код писал на скорую руку, сильно не пинать. 
PM MAIL   Вверх
BeeMaster
Дата 26.7.2009, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 3.4.2008

Репутация: нет
Всего: нет



огромное спасибо!!! очень помог!
PM MAIL   Вверх
Christoph
Дата 27.7.2009, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: 5
Всего: 11



там есть компонент называется как то hpIpAddres что то такое, похож очень на виндовское поле ввода айпи адресса, с этим компонентом было бы все намного просто


--------------------
user posted image
PM MAIL ICQ   Вверх
Snowy
Дата 27.7.2009, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 31
Всего: 484



Код

uses WinSock;

.....

function RevertBytes(Value: LongWord): LongWord; // разворачивает байты в/из сетевой порядок
begin
  result := (Value shl 24) or (Value shr 24) or
            (Value shr 8 shl 24 shr 8) or (Value shl 8 shr 24 shl 8);
end;

function NextIp(addr: string): string; // возвращает следующий IP
var h: TInAddr;
begin
  h.S_addr := inet_addr(PChar(addr));
  h.S_addr := RevertBytes(RevertBytes(h.S_addr) + 1);
  Result := inet_ntoa(h);
end;

procedure TForm1.Button1Click(Sender: TObject); // пример использования
begin
  Caption := NextIp('142.0.101.255');
end;

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0789 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.