Главная страница
    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.045 c
15-1143217541
Ученик чародея
2006-03-24 19:25
2006.04.16
Принтсервер Surecom EP-903X-U печать из DOS-а.


15-1143028357
TStas
2006-03-22 14:52
2006.04.16
Чего почитать, чтобы понять, как винды работают?


2-1143885475
EXILE
2006-04-01 13:57
2006.04.16
Как открыть в Delphi .exe файл


2-1144137978
Julia
2006-04-04 12:06
2006.04.16
коды клавиш


15-1143117839
SergP.
2006-03-23 15:43
2006.04.16
HTML. Форма в ячейке таблицы. Проблема.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский