![]() |
|
#1
|
|||
|
|||
![]() Здравствуйте...
Делаю чат и у меня клиент отправляет серверу команду в виде "|register|login|password|info|" дальше сервер должен из этой строки вытащить 'register' команда серверу на регистрацию, 'login' проверка логина, 'password' проверка пароля, 'info' и прочая инфа... С помощью pos можно найти тот или иной символ и какой он по порядку... Пример p:=pos('|',st); Мне нужно найти какие по порядку все символы '|' что бы потом копировать то что между этими символами... подскажите как заставить pos найти 2,3,4 символы '|'. |
#2
|
||||
|
||||
![]() Ссылка на книгу в подписи (раздер "RegExp").
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение: | ||
Van-89 (06.02.2013)
|
#3
|
||||
|
||||
![]() Цитата:
Это слишком круто для такого парсера. Достаточно PosEx Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
Этот пользователь сказал Спасибо Aristarh Dark за это полезное сообщение: | ||
Van-89 (06.02.2013)
|
#4
|
||||
|
||||
![]() Я бы вообще заместо кустарных парсеров и протоколов посоветовал использовать XML, он достаточно прост, да и парсеров на него куча.
Джаббер вон на xml основан. — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение: | ||
Van-89 (06.02.2013)
|
#5
|
||||
|
||||
![]() применяй для каждого значения register, login, password, info строку фиксированной длины. т.е. каждое дополняй пробелами справа. на другой стороне через Copy() и фиксированные позиции, с применением Trim() получишь исходные данные.
Пишу программы за еду. __________________ |
Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
Van-89 (06.02.2013)
|
#6
|
||||
|
||||
![]() Можно конечно и через ExPos, но намного приятнее работать с такой строкой, как с массивом параметров:
Код:
Var Lst: TStringList; RegInfo: record Reg,Login,Password,Info: String; end; St: String; begin St := '|1|Иванов|Пароль|Наш парень|'; Lst := TStringList.Create; Lst.Text := StringReplace(St,'|',#13,[rfReplaceAll]); RegInfo.Reg := Lst.Strings[1]; RegInfo.Login := Lst.Strings[2]; RegInfo.Password := Lst.Strings[3]; RegInfo.Info := Lst.Strings[4]; end; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение: | ||
Van-89 (06.02.2013)
|
#7
|
|||
|
|||
![]() Спасибо за подсказки всё сделал))
|