Консультация № 165031
15.04.2009, 12:38
0.00 руб.
0 5 4
Здравствуйте, уважаемые эксперты!
Есть поле TEdit, оно может принимать текстовое значение, а может выглядеть как 125.12.111.255. Как проверить правильность ip адреса? Есть ли готовые решения в дельфях или надо свою функцию придумывать?

Обсуждение

Неизвестный
15.04.2009, 13:41
общий
это ответ
Здравствуйте, Maximus777!
Стандартных компонент нет, но есть готовые решения от сторонних разработчиков.
Посмотрите здесь - http://www.delphisources.ru/pages/faq/base/ipedit.html
Неизвестный
15.04.2009, 14:39
общий
Если IPEdit не подходит, то тогда сами анализируйте, благо правила формирования IP достаточно просты и описаны в любом учебнике по TCP/IP. Например, тут IP адресация
Неизвестный
15.04.2009, 19:30
общий
это ответ
Здравствуйте, Maximus777!

Набросал функцию разбора строки и проверки - проверяет, чтобы было четыре числовых компонента, разделенных точками и каждый из них был в диапазоне от 0 до 255. Думаю этого достаточно. Возвращает булевское значение.
Дельфов нету под рукой, поэтому писал в Паскале. Думаю в Дельфах тоже будет работать, хотя под ними ее можно еще короче реализовать.

С уважением, Дмитрий

Приложение:
function CheckIP(s: string): boolean;
var i: byte;
j,code: integer;
begin
s:=s+'.';
CheckIP:=true;
for i:=1 to 4 do begin
if pos('.',s)<>0 then begin
val(copy(s,1,pos('.',s)-1),j,code);
if (code<>0) or (j<0) or (j>255) then begin
CheckIP:=false;
break;
end;
end else begin
CheckIP:=false;
break;
end;
s:=copy(s,pos('.',s)+1,255);
end;
end;
Неизвестный
15.04.2009, 23:48
общий
это ответ
Здравствуйте, Maximus777!

В составе свободно распространяемого набора компонентов "JEDI Visual Component Library" (http://jvcl.delphi-jedi.org) есть довольно таки неплохой экземпляр необходимого вам компонента - TJvIPAddress

- может работать с ДБэваре компонентами (опционально)
- имеет сойства для получения числового представления IP-адреса или потдельно по байтам
Неизвестный
16.04.2009, 09:33
общий
это ответ
Здравствуйте, Maximus777!
А может проще подставлять в Едит разные маски? Если надо ввести IP адрес ставим одну маску, а для других вариантов другие.
Форма ответа