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

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

копирование с помощью потоков [D7]


frameZ ©   (2007-04-19 14:18:00) 

Клиент серверное приложениие для локалки. Работаю через сокеты. Посылаею на сервер команду снятия скриншота. Он снимает копию экрана сохраняет в поток и посылает клиенту . Как клиенту прочитать поток в компонент Image? Скриншот  хранится в BMP.


SlymRO   (2007-04-20 07:22:00) [1]

А поискать слабо? Только вчера перетирали!
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1176622206&n=18


Romm   (2007-04-19 15:08:00) [2]


> framez ©   (19.04.07 15:04) [11]

Stream.Size
?


> Сергей М. ©   (19.04.07 15:04) [12]

:)


Сергей М.   (2007-04-19 15:07:00) [3]


> framez ©   (19.04.07 15:04) [11]


Реализуй своего наследника TStream с перекрытыми методами Read и Write.


framez   (2007-04-19 15:04:00) [4]

А подскажите как узнать при передачи файла через сокеты объем принятой или переданной информации?


Сергей М.   (2007-04-19 15:04:00) [5]


> жесть


Дешевый твентинейджерский сленг)


Romm   (2007-04-19 15:03:00) [6]


> Сергей М. ©   (19.04.07 14:57) [9]

жесть: )


Romm   (2007-04-19 14:57:00) [7]


> Сергей М. ©   (19.04.07 14:51) [5]

да и какая разница - главное работает :))


Сергей М.   (2007-04-19 14:57:00) [8]


> Romm ©   (19.04.07 14:55) [7]


"На миг блаженство, навек урод" (С)


Romm   (2007-04-19 14:55:00) [9]


> Сергей М. ©   (19.04.07 14:51) [5]

ну вот хоть бы раз дали покупаться в славе и уважении :)))


Romm   (2007-04-19 14:54:00) [10]


> framez ©   (19.04.07 14:44) [4]

да не мне спасибо, а Мастерам, которые меня вчера этому учили :))

{RASkov}, Johnmen, Плохиш... простите если кого забыл упомянуть :)


Сергей М.   (2007-04-19 14:51:00) [11]


> Дайте мастеру слово!


Я бы не дал)

Кто тебя, "мастера", учил не анализировать результат работы функциональныхметодjd SendBuf() и ReceiveBuf() ?


framez   (2007-04-19 14:44:00) [12]

Спасибо Romm!


Romm   (2007-04-19 14:40:00) [13]

Дайте мастеру слово! :)

procedure TMainForm.screen;
var
 size:int64;
 DeskTopDC: HDc;
 DeskTopCanvas: TCanvas;
 DeskTopRect: TRect;
 Bitmap:TBitmap;
 JPEG:TJPEGImage;
begin
 DeskTopDC := GetWindowDC(GetDeskTopWindow);
 DeskTopCanvas := TCanvas.Create;
 DeskTopCanvas.Handle := DeskTopDC;
 DeskTopRect := Rect(0, 0, Screen.Width, Screen.Height);
 Bitmap:=TBitmap.Create;
 Bitmap.Width:=Screen.Width;
 Bitmap.Height:=Screen.Height;
 Bitmap.Canvas.CopyRect(DeskTopRect, DeskTopCanvas, DeskTopRect);
 jpeg:=TJpegImage.Create;
 jpeg.Assign(Bitmap);
 ReleaseDC(GetDeskTopWindow, DeskTopDC);
 Stream:=TMemoryStream.Create;
 jpeg.SaveToStream(stream);
 Stream.Position:=0;
 Size := Stream.Size;
 ServerSocket1.Socket.Connections[0].SendBuf(Size, SizeOf(Size));
 ServerSocket1.Socket.Connections[0].SendStream(Stream);
 Bitmap.Free;
 jpeg.Free;
end;

***
private
   Reciveing: boolean;
   Size: int64;
   AllSize: int64;
   Stream: TMemoryStream;
   Jpeg: TJPEGImage

procedure TMainForm.ClientSocket1Read(Sender: TObject;
 Socket: TCustomWinSocket);
var
Buf: array[0..8191] of byte;
RecivedSize: integer;
begin
if not Reciveing then
  begin
    Socket.ReceiveBuf(Size, SizeOf(Size));
    Reciveing := true;
    Stream := TMemoryStream.Create;
    AllSize := 0;
  end
else
  begin
    RecivedSize := Socket.ReceiveBuf(Buf, SizeOf(Buf));
    Stream.Write(Buf, RecivedSize);
    inc(AllSize, RecivedSize);
    if AllSize = Size then
      begin
        Reciveing := false;
        JPeg := TJPEGImage.Create;
        Stream.Position := 0;
        JPeg.LoadFromStream(Stream);
        Image1.Picture.Assign(Jpeg);
        Jpeg.Free;
        Stream.Free;
    end;
end;


frameZ   (2007-04-19 14:33:00) [14]

по идее в память.
в компоненте image есть  процедура Image1.Picture.Bitmap.LoadFromStream(Stream). Как я понял он читает из потока картинку и загружает в image.


Johnmen   (2007-04-19 14:21:00) [15]

Куда клиент принимает это хозяйство?


Наверх

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