Тема: Delphi [TStream]
Показать сообщение отдельно

  #3  
Старый 15.03.2009, 23:46
Flame of Soul
Участник форума
Регистрация: 25.05.2007
Сообщений: 290
С нами: 9980798

Репутация: 435
По умолчанию

Простите, ночую у родителей, но вот код для примера, который должен на мой взгляд работать.

Код для сервера:
PHP код:
...
    
RuSrm: TStream; 
...

procedure TForm1.FormCreate(...); 
begin 
  RuSrm
:= nil; 
end; 

procedure TForm1.FormDestroy(...); 
begin 
  
if Assigned(ComSrm) then 
  begin 
    RuSrm
.Free; 
    
RuSrm:= nil; 
  
end; 
end; 

procedure TForm1.ServerSocket1ClientConnect(...); 
begin
  RuSrm 
:= TStream.Create;
  
Image1.Picture.Bitmap.SaveToStream(RuSrm); 
  
Socket.SendStream(RuSrm); 
end; 

procedure TForm1.btnTestSocketsClick(...); 
begin 
  ServerSocket1
.Active := True; 
end; 

end. 
Код для клиента:
PHP код:
...
  private 
    
ComSrm: TStream; 
...

procedure TForm1.ClientSocket1Read(Sender: TObject; 
  
Socket: TCustomWinSocket); 
var 
  
iLen: Integer; 
  
Bfr: Pointer; 
begin 
  iLen 
:= Socket.ReceiveLength; 
  
GetMem(Bfr, iLen); 
  try 
    
Socket.ReceiveBuf(Bfr^, iLen); 
    
ComSrm.Write(Bfr^, iLen); 
  finally 
    
FreeMem(Bfr); 
  
end; 
end; 

procedure TForm1.FormCreate(...); 
begin 
  ComSrm 
:= nil; 
end; 

procedure TForm1.FormDestroy(...); 
begin 
  
if Assigned(ComSrm) then 
  begin 
    ComSrm
.Free; 
    
ComSrm := nil; 
  
end; 
end; 

procedure TForm1.ClientSocket1Disconnect(...); 
begin 
  
if Assigned(ComSrm) then 
  begin
    Image1
.Picture.Bitmap.LoadFromStream(ComSrm); 
    
ComSrm.Free; 
    
ComSrm := nil; 
  
end; 
end; 

procedure TForm1.ClientSocket1Connect(...); 
begin 
  FStream 
:= TStream.Create(ComSrm); 
end; 

procedure TForm1.btn1SocketsClick(...); 
begin 
  ClientSocket1
.Active := True; 
end;

end. 

Последний раз редактировалось Flame of Soul; 15.03.2009 в 23:48..
 
Ответить с цитированием