Главная страница
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.025 c
1-1122498912
Olegha
2005-07-28 01:15
2005.08.14
Цвет


4-1118745974
Peter_cc
2005-06-14 14:46
2005.08.14
Подсказка над треем...


14-1122109559
lookin
2005-07-23 13:05
2005.08.14
Что вы получите? Маленький тест.


1-1122463037
Pasha L
2005-07-27 15:17
2005.08.14
зашить один ехе-шник в другой


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