Вниз
Скачать: CL | DM;

как сжать поток   Найти похожие ветки 

 
iskatel ©   (2005-07-26 22:26) [0]

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


 
Джо ©   (2005-07-26 22:32) [1]

Используй библиотеку ZLib, входящую в поставку Делфи. Там классы-наследники TCustomZlibStream являются потомками TStream. Класс находится в ZLib.dcu, сам pas-файл: в каталоге Extras стандартной поставки Delphi.


 
Ученик   (2005-07-26 22:33) [2]

Ненужное удалить


uses
 ZLib;

procedure CompressStream(Source: TStream; Dest: TStream = nil; aLevel: TCompressionLevel = clFastest);
var
 DataSize: Integer;
 MemoryStream: TMemoryStream;
begin
 MemoryStream := TMemoryStream.Create;
 try
   DataSize := Source.Size;
   MemoryStream.Write(DataSize, SizeOf(DataSize));
   with TCompressionStream.Create(aLevel, MemoryStream) do try
     CopyFrom(Source, 0)
   finally
     Free
   end;
   if Dest = nil then begin
     Source.Size := 0;
     Dest := Source
   end;
   Dest.CopyFrom(MemoryStream, 0)
 finally
   MemoryStream.Free
 end
end;



 
iskatel ©   (2005-07-26 22:36) [3]

2 вопроса

1 никаких заголовков и вообще ничего лишнего не добавится? распаковывается в обратной последовательности?

2 у меня билдер 6 и нету там zlib, где ее взять?


 
Ученик   (2005-07-26 22:40) [4]

>iskatel ©   (26.07.05 22:36) [3]

>лишнего ничего не добавится, про билдер не знаю


procedure DecompressStream(Source: TStream; Dest: TStream = nil);
var
 DataSize: Integer;
 MemoryStream: TMemoryStream;
 D: TDecompressionStream;
begin
 MemoryStream := TMemoryStream.Create;
 try
   Source.Read(DataSize, SizeOf(DataSize));
   D := TDecompressionStream.Create(Source);
   with D do try
     MemoryStream.CopyFrom(D, DataSize)
   finally
     D.Free
   end;
   if Dest = nil then begin
     Source.Size := 0;
     Dest := Source
   end;
   Dest.CopyFrom(MemoryStream, 0)
 finally
   MemoryStream.Free
 end
end;



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.033 c
14-1121778131
oldman
2005-07-19 17:02
2005.08.14
Ну надо же было так прогнуться...


1-1122368068
dddim
2005-07-26 12:54
2005.08.14
winexec


1-1122059658
Spartak
2005-07-22 23:14
2005.08.14
Глюки TListView


1-1122017906
stud
2005-07-22 11:38
2005.08.14
обратиться к потоку в рантайм


1-1122496763
muny
2005-07-28 00:39
2005.08.14
функция power




   Наверх