Форум: "Начинающим";
Текущий архив: 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