1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
procedure TFrmShowJPEG.ClientSocketJPEGRead(Sender: TObject;
Socket: TCustomWinSocket);
var
DummyStream: TMemoryStream;
DummyJPEg: TJPEGImage;
Count, TotalCount: Integer;
Buffer: Pointer;
begin
ClientSocketJPEG.OnRead := nil; // important à cause du Application.ProcessMessage...
try
lblRead.Caption := 'Réception ...'; lblRead.Refresh();
try
DummyStream := TMemoryStream.Create();
try
Count := 0;
TotalCount := 0;
repeat
lblRead.Caption := 'Réception ... ' + IntToStr(Socket.ReceiveLength) + ' / ' + IntToStr(TotalCount) + ' '; lblRead.Refresh();
DummyStream.SetSize(TotalCount+Socket.ReceiveLength);
Count := Socket.ReceiveBuf(Pointer(Integer(DummyStream.Memory)+TotalCount)^, Socket.ReceiveLength);
Inc(TotalCount, Count);
MemoLog.Lines.Add(lblRead.Caption);
Application.ProcessMessages(); // Attention, aux events empilés !
until Count <= 0;
DummyJPEg := TJPEGImage.Create();
try
DummyJPEg.LoadFromStream(DummyStream);
ImageRead.Picture.Bitmap.Assign(DummyJPEg);
finally
DummyJPEg.Free();
end;
finally
DummyStream.Free();
end;
lblRead.Caption := 'Terminé !';
except
lblRead.Caption := 'Except : ' + Exception(ExceptObject).Message;
end;
finally
ClientSocketJPEG.OnRead := ClientSocketJPEGRead;
end;
end; |
Partager