Использоваение Zlib

  • Автор темы Guest
  • Дата начала
G

Guest

Всем, Доброго дня!
Возникла необходимость кодировать и декодировать данные с использованием ZLib (Delphi 2010), а точнее используя функции ZCompress и ZDeCompress. Компрессия вроди как получается, но вот обратно ничего не выходит. Выдает - Data Error.

Для проверки наскоряк написал такой код:
Код:
var
InFile:TMemoryStream;
out_buf,o2:pointer;
str:String;
sz:integer;
buf,buf2:array [0..66] of byte;
begin
InFile:=TMemoryStream.Create;
InFile.LoadFromFile('c:\codetext.txt');
InFile.Read(buf,67);
ZCompress(@buf,InFile.Size,out_buf,sz);
InFile.Free;
InFile:=TMemoryStream.Create;
ZDecompress(out_buf,sz,o2,sz);
InFile.Write(o2,sz);
InFile.SaveToFile('c:\sss2.decmp');
end;

Сдесь в файле c:\codetext.txt хрониться одна строка текста которую я компрессирую процедурой ZCompress, затем тутже получившийся результат out_buf пытаюсь декопрессировать ZDecompress(out_buf,sz,o2,sz) и записать результат в файл. В таком варианте ошибки нет, файл создается, но исходного текста так и не видно - содержит в себе полную тарабарщину.

Кто работал с ZLib подскажите пожалуйста как их правильно использовать.
 
D

Dimka Inc

Хм. Вопрос номер 1. А на что указывают указатели out_buf и o2? Насколько мне известно, сначала надо выделить область памяти, инициализировать указател, ссылающийся на эту область памяти, а уже потом туда что-то писать, или считывать.
 
S

sinkopa

Всем, Доброго дня!
Возникла необходимость кодировать и декодировать данные с использованием ZLib (Delphi 2010), а точнее используя функции ZCompress и ZDeCompress. Компрессия вроди как получается, но вот обратно ничего не выходит. Выдает - Data Error.

Для проверки наскоряк написал такой код:
...
Кто работал с ZLib подскажите пожалуйста как их правильно использовать.

Вот рекомендованный embarcadero пример использования ZLib

Скачать там правда дают только зарегистрированным юзерам, поэтому вот (см. в аттаче)
 

Вложения

  • 18987_example_use_of_zlib_compressbuf_and_decompresstouserbuf.ZIP
    870 байт · Просмотры: 228
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!