Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

O пересылке данных с TIdTCPServer [D7, WinXP]


Страницы:   1 2

DanilinS ©   (2006-07-25 15:15:00) 

Необходимо дергать данные с сервера. Данные структурированы но их обьем заренее не известен.

Не могу понять, почему не работает следующий код:

Сервер:

код:
procedure TForm1.CommandServerException(AThread: TIdPeerThread;
 AException: Exception);
var
 TempStrings: TStrings;
 I:Byte;
begin
 AThread.Connection.ReadBuffer(CommandS, SizeOf(CommandS));
 case CommandS.Command of
   01: begin  // старт динамического импорта

      ...
       end;
   02: begin     // Стоп динамического импорта
          ...
       end;
   03: begin     // Запрос перечня данных
         if PathBase = '' then Exit;
         if PathBase[Length( PathBase )] <> '\' then
           PathBase := PathBase + '\';
         FillSymbols(PathBase);  // загнали данные в массив
         TempStrings:=TStringList.Create;
         For i:=0 to Length (ArrayMasterRec) do
           TempStrings.Add(ArrayMasterRec[i].Name);
         Label3.Caption:= ArrayMasterRec[0].Name;
         AThread.Connection.WriteStrings(TempStrings); // кинули данные
         TempStrings.Free;
       end;
   04: begin   // Запрос исторических данных
          ...
       end;
 end;
end;


клиент:
код:
procedure TForm1.Button3Click(Sender: TObject);
var
 TempList: Tstrings;
 Int: integer;
 S: string;
begin
 TempList := TStringList.Create;
 CommandS.Command:=3;
 IdTCPClient1.Connect(-1);
 IdTCPClient1.WriteBuffer(CommandS, SizeOf(CommandS));
 Int:=IdTCPClient1.ReadInteger(true);
 IdTCPClient1.ReadStrings(TempList);  <- получаю "Connection Closed Gracefully"
 Memo1.Lines.AddStrings(TempList);
 IdTCPClient1.Disconnect;
 TempList.Free;
end;


Кто подскажет, как TString через сетку протащить?


umbra   (2006-07-25 15:51:00) [21]


> CommandServerException

А почему обработку команд Вы вешаете на обработчик исключений, возникающих в потоке, работающем с клиентом?


DanilinS   (2006-07-25 15:51:00) [22]

Сорри ... опечатка. CommandServerExecute естественно

CommandS: TCommand;

TCommand = record
   Command: Byte;
   Name: String [20];
end;


Reindeer Moss Eater   (2006-07-25 15:27:00) [23]

При чем здесь обработчик CommandServerException?
Что такое CommandS?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо