CompressionInterceptBubble.pas 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. { $HDR$}
  2. {**********************************************************************}
  3. { Unit archived using Team Coherence }
  4. { Team Coherence is Copyright 2002 by Quality Software Components }
  5. { }
  6. { For further information / comments, visit our WEB site at }
  7. { http://www.TeamCoherence.com }
  8. {**********************************************************************}
  9. {}
  10. { $Log: 21055: CompressionInterceptBubble.pas }
  11. {
  12. Rev 1.0 6/26/2003 1:10:06 PM BGooijen
  13. Initial checkin
  14. }
  15. unit CompressionInterceptBubble;
  16. interface
  17. uses
  18. SysUtils, Classes, BXBubble, Forms;
  19. type
  20. TdmodCompressionInterceptBubble = class(TDataModule)
  21. bublCompressionIntercept: TBXBubble;
  22. procedure bublCompressionInterceptTest(Sender: TBXBubble);
  23. private
  24. protected
  25. public
  26. end;
  27. var
  28. dmodCompressionInterceptBubble: TdmodCompressionInterceptBubble;
  29. implementation
  30. {$R *.dfm}
  31. uses
  32. IdCompressionIntercept;
  33. function CompareStreams(StreamA,StreamB:TStream):boolean;
  34. var
  35. LBufferA,
  36. LBufferB: array[0..1023] of char;
  37. LSize:integer;
  38. begin
  39. result:=StreamA.size=StreamB.size;
  40. while result and (StreamA.Position<StreamA.Size) do begin
  41. LSize:=StreamA.Read(LBufferA,sizeof(LBufferA));
  42. StreamB.Read(LBufferB,sizeof(LBufferB));
  43. result:=CompareMem(@LBufferA,@LBufferB,LSize);
  44. end;
  45. end;
  46. procedure TdmodCompressionInterceptBubble.bublCompressionInterceptTest(
  47. Sender: TBXBubble);
  48. var
  49. LCompressor:TIdCompressionIntercept;
  50. LDecompressor:TIdCompressionIntercept;
  51. LCompressedStream:TMemoryStream;
  52. LDecompressedStream:TMemoryStream;
  53. begin
  54. LCompressor:=TIdCompressionIntercept.Create(nil);
  55. try
  56. LDecompressor:=TIdCompressionIntercept.Create(nil);
  57. try
  58. LCompressor.CompressionLevel := 9;
  59. LDecompressor.CompressionLevel := 9;
  60. LCompressedStream:=TMemoryStream.Create;
  61. LDecompressedStream:=TMemoryStream.Create;
  62. try
  63. LDecompressedStream.LoadFromFile(paramstr(0));
  64. LCompressedStream.CopyFrom(LDecompressedStream,0);
  65. LCompressedStream.Position:=0;
  66. LDecompressedStream.Position:=0;
  67. LCompressor.Send(LCompressedStream);
  68. LCompressedStream.Position:=0;
  69. LDecompressor.Receive(LCompressedStream);
  70. LCompressedStream.Position:=0;
  71. Sender.Check( LCompressedStream.size=LDecompressedStream.size, 'Sizes do not match');
  72. Sender.Check( CompareStreams(LCompressedStream,LDecompressedStream), 'Stream data does not match');
  73. finally
  74. FreeAndNil(LCompressedStream);
  75. FreeAndNil(LDecompressedStream);
  76. end;
  77. finally
  78. FreeAndNil(LDecompressor);
  79. end;
  80. finally
  81. FreeAndNil(LCompressor);
  82. end;
  83. end;
  84. end.