Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Поиск фразы в данных, получаемых с сервера


Автор: Allbert 9.4.2009, 08:04
Добрый день!
Подскажите, пожалуйста, как в потоке данных, получаемых с сервера можно прочитать конкретную фразу? Я использую telnet-клиент. Нужно, чтобы при получении определенной фразы выводилось соответствущее сообщение (ShowMessage).

Автор: Allbert 9.4.2009, 08:32
все сообщения, получаемые с сервера, у меня отображаются в Memo1. Может, как-нибудь оттуда можно находить конкретные фразы?

Автор: mapple 17.4.2009, 12:06
Может уже поздно отвечаю, но вдруг еще мучаешся
Конечно можно, я так понимаю что используешь Get метод, который в memo.text бросает полученные данные и уже работаешь с memo,  тоесть парсиш все данные там и все (это обобщенно, а конкретно написать тебе код - надо видеть как обращаешься к серверу) Парсить можно любыми функциями нахождения подстроки в строке.

Автор: Allbert 30.4.2009, 08:33
С поиском более менее разобрался:
Код

var
...
   S,S1: string;
begin
...
 S := StringReplace(Memo1.Lines.Text, #13#10, ' ', [rfReplaceAll]);
            S1 := StringReplace(Memo1.Lines.Text, #13#10, ' ', [rfReplaceAll]);
if (Pos('exsci:name='+NameConnect+',dev='+dev_BSC+';', S) > 0) and (Pos('ORDERED', S1) > 0) then
  Application.MessageBox ('Подключено', 'Результат', mb_Ok)
    else Application.MessageBox ('Не подключено', 'Результат', mb_Ok);
...
end;

Мне нужно вывести сообщение об удачном подключении при наличии обеих строк в Memo1. Проблема в том, что поиск для обеих строк осуществляется по всему Memo1. А мне надо, чтобы для S1 поиск начинался со строки, следующей за S.. Просто слово ORDERED встречается и до появления строки S..

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)