Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.16;
Скачать: CL | DM;

Вниз

TMemoryStream TidTCPClient..server   Найти похожие ветки 

 
Fl@sh ©   (2006-03-29 19:00) [0]

На сервере обработчик:
procedure TForm1.ITCPSTIdCommandLoadFromDBKlientCommand(
 ASender: TIdCommand);
var
 DataModule: TDataModule1;
 i: integer;
 SL: TStringList;
 ipRR: string;
 ms: TMemoryStream;
begin
 DataModule := TDataModule1.Create(nil);
 try
   ipRR := ASender.Params[0];

   with DataModule.IBQuery do
   begin
     Close;
     SQL.Clear;
     SQL.Text := "SELECT * FROM KLIENT WHERE "RR"=" + ipRR;
     Open;
   end;

   SL := TStringList.Create;
   ms := TMemoryStream.Create;
   try
     try

       for i := 0 to DataModule.IBQuery.FieldCount - 1 do
         SL.Add(DataModule.IBQuery.Fields[i].AsString);
         SL.Add("asdf");
         SL.SaveToStream(ms);
         ASender.Thread.Connection.WriteStream(ms, True, False);
     except
       on E: Exception do
         Writeln("Error:" + e.Message);
     end;
   finally
     SL.Free;
     ms.Free;
   end;
 finally
   DataModule.Free;
 end;
end;



На клиенте:
procedure TfmServer.Button5Click(Sender: TObject);
var
 i : Integer;
 ms: TMemoryStream;
 SL: TStringList;
begin
 fmServer.IdTCPClient.Connect;
 fmServer.IdTCPClient.SendCmd("select 2345");
 ms := TMemoryStream.Create;
 try
//    ms.Position := 0;
   fmServer.IdTCPClient.ReadStream(ms);

   SL.LoadFromStream(ms);
   //Memo1.Lines.LoadFromStream(ms);
 finally
   SL.Free;
   ms.Free;
 end;
end;


Вискакивает error на строчке    SL.LoadFromStream(ms);
..excepion with message "Out of memory while expanding memory stream". Use step..
Как лечить?


 
antonn ©   (2006-03-29 19:48) [1]

комментарий убрать
  fmServer.IdTCPClient.ReadStream(ms);
  ms.Position := 0;
  SL.LoadFromStream(ms);


 
Fl@sh ©   (2006-03-29 20:02) [2]

Вот так:
procedure TfmServer.Button5Click(Sender: TObject);
var
 i : Integer;
 ms: TMemoryStream;
 SL: TStringList;
begin
 fmServer.IdTCPClient.Connect;
 fmServer.IdTCPClient.SendCmd("select 2345");
 ms := TMemoryStream.Create;
 try
   fmServer.IdTCPClient.ReadStream(ms); //Ошибка та же что и в [0]
   ms.Position := 0;
   SL.LoadFromStream(ms);
 finally
   SL.Free;
   ms.Free;
 end;
end;

Не помогло :)


 
antonn_   (2006-03-29 20:24) [3]

кстати, SL создается?

по проблеме - не знаю, я с ТЦП не работал...


 
Fl@sh ©   (2006-03-29 20:44) [4]


> кстати, SL создается?

Уже да, я забыл про него, хотя суть не в этом, я еще даже к SL не обращался.


 
tesseract ©   (2006-03-29 21:50) [5]

Пример из help по TCPClient по indy 9


     if bSizeKnown then
     // read known data size
     AConnection.ReadStream(AStream, ABytes, False)
     else
     // read all data until disconnected
     AConnection.ReadStream(AStream, -1, True);


 
Fl@sh ©   (2006-03-29 22:37) [6]


> tesseract ©   (29.03.06 21:50) [5]

Спасибо большое за пример
Кому интересно, вот как надо:

...
try
 fmServer.IdTCPClient.ReadStream(ms, ms.Size, False);    
 ms.Position := 0;
 SL.LoadFromStream(ms);
finally
...



Страницы: 1 вся ветка

Текущий архив: 2006.04.16;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.388 c
2-1144061255
Gydvin
2006-04-03 14:47
2006.04.16
кординаты символа в RichEdit


2-1143788951
Ega23
2006-03-31 11:09
2006.04.16
Поиск параметров командной строки


15-1143012008
vecna
2006-03-22 10:20
2006.04.16
Подскажите, где достать электронную документацию по FireBird?


4-1138280826
Kolan
2006-01-26 16:07
2006.04.16
Помогите разобраться с небольшим участком код...


2-1143693035
Sw
2006-03-30 08:30
2006.04.16
DBGrid