Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> onDataAvailable в IdTelnet 
:(
    Опции темы
Allbert
Дата 31.3.2009, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 20.3.2009

Репутация: нет
Всего: нет



День добрый! Ниже приведен код, отображающий в Memo1 данные, полученные с сервера через Telnet-клиент. Подскажите, пожалуйста, как его изменить, чтобы не отображались данные с нулевой длиной? Сервер постоянно посылает нулевые сообщения, это мешает работе. Хочется, чтобы отображались только полезные сообщения. Заранее спасибо!

Код

procedure TForm1.IdTelnet1DataAvailable(
Sender: TidTelnet; const Buffer: String);
const
   CR=#13;
   LF=#10;
var
   Start, Stop: Integer;
begin
       Memo1.Lines.Add('');
       Start:=1;
       Stop:=Pos(CR, Buffer);
       if Stop=0 then
       Stop:=Length(Buffer)+1;
         while Start<=Length(Buffer) do
           begin
            Memo1.Lines.Strings[Memo1.Lines.Count-1]:=
            Memo1.Lines.Strings[Memo1.Lines.Count-1]+
            Copy(Buffer, Start, Stop-Start);
            if Buffer[Stop]=CR then
              begin
                 Memo1.Lines.Add('');
              end;
            Start:=Stop+1;
            if Start>Length(Buffer) then
            Break;
            if Buffer[Start]=LF then
            Start:=Start+1;
            Stop:=Start;
            while(buffer[Stop]<>CR) and (Stop<=Length(Buffer)) do
            Stop:=Stop+1;
           end;
end;

PM MAIL   Вверх
ArthurX
Дата 2.6.2009, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 2.6.2009

Репутация: нет
Всего: нет



Цитата(Allbert @ 31.3.2009,  09:37)
...Сервер постоянно посылает нулевые сообщения...

Засунь весь код от begin до end в условие:

Код

if Length(Buffer)>0
  then begin
              <код>
           end;


пустые строки перестанут приходить.

А вообще этот код из примера idtelnet немного косячный, вставляет кучу пустых строк несчитая нулевые датаавейлабл. Я его немного доработал напильником smile

Вставь вместо этого 20этажного кода всего три строчки и посмотри на результат:

Код

var str: string;
begin
if Length(Buffer)>0
  then begin
                str:=StringReplace(Buffer,#13#10#13,#13#10,[rfReplaceAll, rfIgnoreCase]);
                str:=StringReplace(str,#13#10#13#10#10#13,#13#10#13#10,[rfReplaceAll, rfIgnoreCase]);
                Memo.Lines.Add(str);
           end;
end;



M
THandle
Модератор: используйте подсветку кода!


Это сообщение отредактировал(а) THandle - 3.6.2009, 09:13
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0578 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.