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

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

Как через TMemoryStream и IdTCPServer передать переменную Record [D7, XP]


Страницы:   1 2

oam333 ©   (2012-12-18 17:07:00) 

Есть переменная типа Record. В ней два параметра: типа Integer и типа TMemoryStream.
Как полученную переменную Record передать клиенту через IdTCPServer, чтобы на клиенте разобрать этот поток обратно в Record?

 TPack = Record
   block_num   : integer;
   pic_content : TMemoryStream;
 end;

var stream_old: TPack;

procedure TForm1.Button1Click(Sender: TObject);
begin
  stream_old.block_num := 10;
  stream_old.pic_content := TMemoryStream.Create;
end;

procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var strText: string;
   i: integer;
   ScreenCopy: TCanvas;
   gr: TBitmap;
   rcDest, rcSource: TRect;
   PNG: TPNGObject;
begin
  rcSource := Screen.DesktopRect; //исходный размер картинки
  rcDest := Rect(0, 0, 100, 100); //конечный размер картинки
  ScreenCopy := TCanvas.Create;
  ScreenCopy.Handle := GetDC(0);
  gr:= TBitmap.Create;
  gr.Height := 100;
  gr.Width := 100;
  gr.Canvas.CopyRect(rcDest, ScreenCopy, rcSource);

  PNG := TPNGObject.Create;
  PNG.Assign(gr);
  PNG.SaveToStream(stream_old.pic_content);
  PNG.Free;
  gr.Free;

  AThread.Connection.WriteStream( stream_old, true, true);
end;



Вот как в предпоследней строке передать stream_old?


брат Птибурдукова   (2012-12-18 17:36:00) [21]


> AThread.Connection.WriteStream(stream_old, true, true);
Ну что-то типа такого:
AThread.Connection.WriteStream(stream_old.block_num, true, true);
AThread.Connection.WriteStream(stream_old.pic_content.memory^, true, true);
...ну там ещё по-любому должна быть какая-то версия WriteStream, позволяющая задавать размер записываемой области памяти.

ЗЫ. А зачем тут запись? Почему бы block_num не пихать в тот же MemoryStream?


Медвежонок Пятачок   (2012-12-18 17:13:00) [22]

Вот так и передать.
Но перед тем как, - встать в начало стрима


Страницы:   1 2

Наверх

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