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

Вниз

копирование с помощью потоков   Найти похожие ветки 

 
frameZ ©   (2007-04-19 14:18) [0]

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


 
Johnmen ©   (2007-04-19 14:21) [1]

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


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

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


 
Romm ©   (2007-04-19 14:40) [3]

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

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:44) [4]

Спасибо Romm!


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


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


Я бы не дал)

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


 
Romm ©   (2007-04-19 14:54) [6]


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

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

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


 
Romm ©   (2007-04-19 14:55) [7]


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

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


 
Romm ©   (2007-04-19 14:57) [8]


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

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


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


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


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


 
Romm ©   (2007-04-19 15:03) [10]


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

жесть: )


 
framez ©   (2007-04-19 15:04) [11]

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


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


> жесть


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


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


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


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


 
Romm ©   (2007-04-19 15:08) [14]


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

Stream.Size
?


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

:)


 
SlymRO ©   (2007-04-20 07:22) [15]

А поискать слабо? Только вчера перетирали!
http://delphimaster.net/view/2-1176622206/



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

Форум: "Начинающим";
Текущий архив: 2007.05.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.057 c
2-1177437833
Lamer666
2007-04-24 22:03
2007.05.13
ADOQuery


2-1176973870
Олег Валерьевич
2007-04-19 13:11
2007.05.13
Количество записей в таблице...


4-1166014068
dzuev
2006-12-13 15:47
2007.05.13
datamax и delphi.


2-1177445212
Alexdeil
2007-04-25 00:06
2007.05.13
Мерцание Image


2-1176948495
ярослав
2007-04-19 06:08
2007.05.13
проблема с перетаскиванием окна





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