Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.04.16;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.04 c
8-1131908988
Toxa_ua
2005-11-13 22:09
2006.04.16
Как в Memo и ListBox вставить фоновый рисунок?


15-1142807778
Bogdan1024
2006-03-20 01:36
2006.04.16
Агрессивные вегетарианцы


2-1142495897
BlackDel
2006-03-16 10:58
2006.04.16
Работа с файлами


3-1140354846
Валера
2006-02-19 16:14
2006.04.16
Импорт из Excel в таблицу Paradox


1-1142101579
AdmeraL
2006-03-11 21:26
2006.04.16
Сообщение Wm_MouseMove и его параметры





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский