Пример использования библиотеки ZLib в версиях без поддержки Unicode.
Сайт библиотеки http://zlib.net/, на нем есть ссылка на интерфейсы для Delphi http://www.base2ti.com/?id=delphi.zlib.
Ссылки по теме:
http://k210.org/delphi/main/4/ - основной пример
http://forum.codecall.net/topic/76077-compress-and-decompress-with-zlib-library/ - пример без CopyFrom
http://www.delphikingdom.ru/asp/answer.asp?IDAnswer=72368 - описание проблемы при переходе к версии Delphi с Unicode
http://stackoverflow.com/questions/943867/zlib-in-delphi-2009 - альтернативный пример
http://delphimaster.net/view/1-1111001345 - пример
Сайт библиотеки http://zlib.net/, на нем есть ссылка на интерфейсы для Delphi http://www.base2ti.com/?id=delphi.zlib.
procedure CompressFile(SourceFileName,DestFileName:string);
var
SourceFileStream:TFileStream;
DestFileStream:TFileStream;
CompressStream:TCompressionStream;
bytecount : Integer;
begin
//Архивируем измененный файл
//поток исходного файла
SourceFileStream:=TFileStream.Create(SourceFileName,fmOpenRead);
//поток файла архива
DestFileStream:=TFileStream.Create(DestFileName,fmCreate);
//размер исходного файла
bytecount:=SourceFileStream.Size;
try
//в начала архива запишем исходный размер
DestFileStream.Write(bytecount,sizeof(bytecount));
//Создадим архивирующий поток, в конструктор передадим тип архивации и поток файла архива
CompressStream := TCompressionStream.Create(clDefault,DestFileStream);
try
//Скопируем все из исходного файла в файл архива через упаковывающифй поток
CompressStream.CopyFrom(SourceFileStream,bytecount);
finally
CompressStream.Free;
end;
finally
SourceFileStream.free;
DestFileStream.Free;
end;
end;
procedure DeCompressFile(SourceFileName,DestFileName:string);
var
SourceFileStream:TFileStream;
DestFileStream:TFileStream;
DeCompressStream:TDecompressionStream;
bytecount : Integer;
begin
//Архивируем измененный файл
//поток исходного файла архива
SourceFileStream:=TFileStream.Create(SourceFileName,fmOpenRead);
//поток целевого файла
DestFileStream:=TFileStream.Create(DestFileName,fmCreate);
//размер исходного файла
bytecount:=SourceFileStream.Size;
try
//прочитаем размер разархивируемого файла
SourceFileStream.Read(bytecount,SizeOf(bytecount));
//если размер больше нуля
if bytecount > 0 then
begin
//Создадим разархивирующий поток от файла архива
DeCompressStream := TDecompressionStream.Create(SourceFileStream);
try
//вытащим все из разархивирующего потока
DeCompressStream.CopyFrom(DeCompressStream,bytecount);
finally
DeCompressStream.Free;
end;
end;
finally
SourceFileStream.free;
DestFileStream.Free;
end;
end;
Ссылки по теме:
http://k210.org/delphi/main/4/ - основной пример
http://forum.codecall.net/topic/76077-compress-and-decompress-with-zlib-library/ - пример без CopyFrom
http://www.delphikingdom.ru/asp/answer.asp?IDAnswer=72368 - описание проблемы при переходе к версии Delphi с Unicode
http://stackoverflow.com/questions/943867/zlib-in-delphi-2009 - альтернативный пример
http://delphimaster.net/view/1-1111001345 - пример
Не скачиваются библиотеки с base2ti, ошибка 401. Какие-то хитрости есть или сбой у них?
ОтветитьУдалитьДа что-то у них проблемы. Написал на саппорт им, может что сделают. На гитхабе в чьем то репе есть исходники https://github.com/mike-lischke/GraphicEx/tree/master/3rd%20party/DelphiZlib
УдалитьПочинили загрузку.
УдалитьСпасибо!
Удалить