Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.30;
Скачать: CL | DM;

Вниз

как разбить ip в стринговой переменной на октеты...   Найти похожие ветки 

 
EvgenTss   (2003-06-13 15:09) [0]

... желательно максимально красиво, без циклов


 
Anatoly Podgoretsky ©   (2003-06-13 15:18) [1]

На какие октеты?


 
Palladin ©   (2003-06-13 15:42) [2]

такие требования
что значит максимально красиво?

var
IPParts:TStringList;

IPParts:=TStringList.Create;
IPParts.Delimiter:=".";
IPParts.DelimitedText:=IPString;

так красиво?
это надо?
или что у тебя там в стринговой переменной? число?


 
evvcom ©   (2003-06-13 15:43) [3]

Действительно на какие октеты? Может на байты? Октеты - значит восьмерки.


 
EvgenTss   (2003-06-13 15:48) [4]

на байты


 
EvgenTss   (2003-06-13 15:52) [5]

в стринговой переменной ip адрес, на выходе нужны четыре переменные типа байт. есть простая функция для данного преобразования?


 
evvcom ©   (2003-06-13 16:03) [6]

А почему с циклами некрасиво? По-моему вполне.


 
EvgenTss   (2003-06-13 16:09) [7]

ок, уговорил


 
Palladin ©   (2003-06-13 16:19) [8]


> EvgenTss (13.06.03 15:52)

есть простая функция, тебе просто написать ее лень


type
TIPBytes=array [1..4] of byte;

function ParseIP(p_strIP:string):TIPBytes;
begin
result[4]:=1;
while pos(".",p_strIP)<>0 do
begin
result[result[4]]:=strtoint(copy(p_strIP,1,pos(".",p_strIP)-1));
p_strIP:=copy(p_strIP,pos(".",p_strIP)+1,length(p_strIP));
result[4]:=result[4]+1;
end;
result[4]:=strtoint(p_strIP);
end;


 
EvgenTss   (2003-06-13 16:42) [9]

to Palladin
мне не лень, я уже сам всё сделал, просто хотел узнать на будущее нельзя ли проще.
Спасибо.


 
vuk ©   (2003-06-13 16:48) [10]

Кстати о птичках... Вспомнилось тут... Не знаю, как в других ОС, а в Windows функции преобразования строки в IP адрес работают так, что если часть адреса начинается с 0, то эта часть интерпретируется как записанная в восьмеричной системе счисления.
То есть следующие два адреса эквивалентны:
123.0123.123.012
123.83.123.10



 
DVM ©   (2003-06-13 18:08) [11]


> Anatoly Podgoretsky © (13.06.03 15:18)
> На какие октеты?

2^8 = 256
255.255.255.255 - ничего не напоминает? Это октет называется.


 
HolyGlory   (2003-06-13 18:39) [12]


procedure IpTo8b(S:String;var a,b,c,d:Byte);
var t:Integer;
v:String;
procedure cut;
begin
t:=Pos(".",S);
v:=Copy(S,1,t-1);
Delete(S,1,t);
end;
begin
cut;a:=inttostr(v);
cut;b:=inttostr(v);
cut;c:=inttostr(v);
d:=inttostr(S);
end;


 
clickmaker ©   (2003-06-13 19:16) [13]

Предлагаю объявить конкурс на лучшее преобразование ip в октеты. Приз получит тот, кто сможет сделать это в одной строчке (не пользуясь готовыми ф-иями)


 
Федя   (2003-06-13 19:37) [14]

В нормальных языках это делается так:

sscanf(ip,"%d.%d.%d.%d",ip1,ip2,ip3,ip4)

P.S. Велик и могуч руССкий язык


 
Aldor ©   (2003-06-13 22:31) [15]

2Федя
>sscanf(ip,"%d.%d.%d.%d",ip1,ip2,ip3,ip4)

sscanf(ip,"%d.%d.%d.%d", &ip1, ...
:)



Страницы: 1 вся ветка

Текущий архив: 2003.06.30;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.012 c
4-97934
APanyovin
2003-04-26 14:44
2003.06.30
Запуск зарегистрированного разрешения *.doc, *.xls, ///


11-97570
Serge_Blockirator
2002-10-21 13:34
2003.06.30
service


1-97613
NailMan
2003-06-19 13:45
2003.06.30
Что лучше и быстрее


14-97806
Gimer
2003-06-10 17:08
2003.06.30
Голубое окно смерти Windows


3-97508
Tanya
2003-06-05 13:19
2003.06.30
Нужно реализовать восстанавливаемость системы