![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Здравствуйте!
Такая проблема: Нужно разбить строку и записать ее в пять переменных Приблизительно так: Строка например: 192.168.1.101:27015 Например объявлены пять переменных (octetIP1 octetIP2 octetIP3 octetIP4 Port) и строку надо записать следующим образом что бы: octetIP1 = 192 octetIP2 = 168 octetIP3 = 1 octetIP4 = 101 Port = 27015 Перекопал много инфы и ничего не нашел. Проблема в том что IPадрес будет всегда разный и за ранее мне не известен. Подскажите пожалуйста как можно решить задачу? |
|
#2
|
||||
|
||||
|
1) Регекспы.
2) Pos, PosEx, Copy. Ищем первую точку, копируем все до нее, делаем StrToInt, затем ищем следующую точку, и т.д. 3) В лоб: Код:
var data:array[0..4] of integer;
...
j := 0;
for i := 0 to 4 do
data[i] := 0;
for i := 1 to length(str) do
begin
if (str[i] >= '0') and (str[i] <= '9')
data[j] := data[j] * 10 + ord(str[i]) - 48;
else if (str[i] = '.') or (str[i] = ':')
begin
j := j + 1;
if (j > 4)
break; // или сообщение об ошибке
end;
else
break; // или сообщение об ошибке
end;![]() Первые 4 элемента массива будут IP, пятый - порт. З.Ы. Кстати, если это связано с предыдущим постом - зачем сначала все собирать в строку, а потом парсить назад в числа? Последний раз редактировалось Bargest, 12.11.2013 в 19:13. |
| Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
Shaft (12.11.2013)
| ||
|
#3
|
|||
|
|||
|
Спасибо! а если не сложно можно не большой примерчик пжл?
P.S. Я создаю свой Master Server, в предыдущей теме я пытался имитировать клиент игры и отправлял запросы на Официальный Master, мне нужно было принять ответ и полностью расшифровать его, что бы я потом мог сам отправлять эти ответы в правильном виде. |
|
#4
|
|||
|
|||
|
Ну не то что бы совсем ничего, для моего случая не могу найти(
Спасибо! Буду пробовать |
|
#5
|
||||
|
||||
|
Цитата:
|
|
#6
|
||||
|
||||
|
Цитата:
Вот где тут парсинг строки? |
|
#7
|
||||
|
||||
|
Неужели действительно "ничего не нашёл"?
Код:
var
ip: string;
octetIP1, octetIP2, octetIP3, octetIP4, Port: Integer;
begin
ip := '192.168.1.101:27015';
octetIP1 := StrToInt(copy(ip,1,pos('.',ip)-1));
delete(ip,1,pos('.',ip));
octetIP2 := StrToInt(copy(ip,1,pos('.',ip)-1));
delete(ip,1,pos('.',ip));
octetIP3 := StrToInt(copy(ip,1,pos('.',ip)-1));
delete(ip,1,pos('.',ip));
octetIP4 := StrToInt(copy(ip,1,pos('.',ip)-1));
delete(ip,1,pos('.',ip));
Port := StrToInt(ip);
end;Последний раз редактировалось PhoeniX, 12.11.2013 в 19:12. |
| Этот пользователь сказал Спасибо PhoeniX за это полезное сообщение: | ||
Shaft (12.11.2013)
| ||