Главная страница
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.046 c
1-1122534545
Karluha
2005-07-28 11:09
2005.08.14
Interface ID


1-1122356559
rentgen
2005-07-26 09:42
2005.08.14
Выбор ячейки в DBGrid


4-1117514872
Logo
2005-05-31 08:47
2005.08.14
WriteConsoleInput


8-1106943331
Денис. Ф.
2005-01-28 23:15
2005.08.14
установка частоты съемки у WEB - камеры


3-1120738308
st0rm
2005-07-07 16:11
2005.08.14
Клонирование связанных таблиц в Access`e!