Обработка данных полученных от сервера!
От: Dyakon_Frost  
Дата: 13.07.06 12:47
Оценка:
Здравствуйте!

Пишу клиент и сервер на C++ Builder 6 используя ClientSocket и ServerSocket.
Мне необходимо получить данные от сервера о файлах находящихся в заданной директории!
В клиенте они выводятся в Memo.
Есть проблема: когда вывожу данные, то они не всегда выводятся построчно, бывает так, что все названия файлов находятся в одной строке!
Как избежать этой проблемы?

Код клиента (вывод в Memo):

void __fastcall TForm1::ClientSocket1Read(TObject *Sender,
      TCustomWinSocket *Socket)
{
 AnsiString buff;
 buff = Socket->ReceiveText();
 //-------------вывод-----------------//
 Memo1->Lines->Add(buff);
}


Код сервера (поиск файлов):

 if (FindFirst(Cur_cat + "*.*", faAnyFile, sr) == 0)
  {
   do
    {
     if ((sr.Attr & faDirectory) != faDirectory)
      {
       ServerSocket1->Socket->Connections[0]->SendText(sr.Name);
      }
    } while (FindNext(sr) == 0);
    FindClose(sr);
  }


Думаю что надо при получении данных в клиенте, записать их в буфер, а потом его обрабатывать!
Но не знаю за что зацепиться.

Заранее спасибо!
Re: Обработка данных полученных от сервера!
От: dkotov  
Дата: 13.07.06 13:35
Оценка:
Здравствуйте, Dyakon_Frost, Вы писали:

D_F>Здравствуйте!


D_F>Пишу клиент и сервер на C++ Builder 6 используя ClientSocket и ServerSocket.

D_F>Мне необходимо получить данные от сервера о файлах находящихся в заданной директории!
D_F>В клиенте они выводятся в Memo.
D_F>Есть проблема: когда вывожу данные, то они не всегда выводятся построчно, бывает так, что все названия файлов находятся в одной строке!
D_F>Как избежать этой проблемы?

D_F>Код клиента (вывод в Memo):


D_F>
D_F>void __fastcall TForm1::ClientSocket1Read(TObject *Sender,
D_F>      TCustomWinSocket *Socket)
D_F>{
D_F> AnsiString buff;
D_F> buff = Socket->ReceiveText();
D_F> //-------------вывод-----------------//
D_F> Memo1->Lines->Add(buff);
D_F>}
D_F>

или Memo1->Lines->Text = Memo1->Lines->Text + buff;
и читай ниже

D_F>Код сервера (поиск файлов):


D_F>
D_F> if (FindFirst(Cur_cat + "*.*", faAnyFile, sr) == 0)
D_F>  {
D_F>   do
D_F>    {
D_F>     if ((sr.Attr & faDirectory) != faDirectory)
D_F>      {
D_F>       ServerSocket1->Socket->Connections[0]->SendText(sr.Name);
D_F>      }
D_F>    } while (FindNext(sr) == 0);
D_F>    FindClose(sr);
D_F>  }
D_F>

Не делай SendText в цыкле, сначала собери все имена в одну строку, именя разделяй "ЕНТЕРОМ",
потом посылай.

D_F>Думаю что надо при получении данных в клиенте, записать их в буфер, а потом его обрабатывать!

D_F>Но не знаю за что зацепиться.

D_F>Заранее спасибо!
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Обработка данных полученных от сервера!
От: Dyakon_Frost  
Дата: 14.07.06 13:03
Оценка:
Большое спасибо!
Все получилось. Странно, что это сразу не пришло в голову!
Re[3]: Обработка данных полученных от сервера!
От: dkotov  
Дата: 14.07.06 13:18
Оценка:
Здравствуйте, Dyakon_Frost, Вы писали:

D_F>Большое спасибо!

D_F>Все получилось. Странно, что это сразу не пришло в голову!

Удачи.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.