Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.14;
Скачать: 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 вся ветка

Текущий архив: 2005.08.14;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.058 c
8-1112783673
DS
2005-04-06 14:34
2005.08.14
Определение разрешения картинок (jpg bmp gif)


14-1121786453
Керк
2005-07-19 19:20
2005.08.14
Изобретение велосипедов non-stop


9-1114076133
Lostcoder
2005-04-21 13:35
2005.08.14
Размер VertexBuffer


1-1121526080
lilo
2005-07-16 19:01
2005.08.14
TEdtit and ES_PASSWORD


14-1121863306
Ega23
2005-07-20 16:41
2005.08.14
Выходя из дома, выдёргивай сетевой кабель из компа!