![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Почему у меня результат упаковки zLib'ом не открывается Winzip? [D7, WinXP]
Aleksandr. © (2005-01-31 15:31:00)В кои-то веки решил переползти с TVclZip на встроенный в Делфу zLib, сделал для теста так:
var
L : TSearchFileList;
zDest : TFileStream;
zSrc : TFileStream;
zL : zlib.TCompressionStream;
Buf : array of byte;
begin
L:=TSearchFileList.Create;
try
if SearchFiles(L,'C:\Test\*.apd') then begin
zDest:=TFileStream.Create('C:\Test\000.zip',fmCreate);
zL:=TCompressionStream.Create(clDefault,zDest);
try
while L.Count>0 do begin
SetLength(Buf,0);
zSrc:=TFileStream.Create(L.Items[0].FullFileName,fmOpenRead OR fmShareDenyNone);
try
SetLength(Buf,zSRC.Size);
zSrc.Read(Buf[0],length(Buf));
zDest.Seek(0,soEnd);
ZL.Write(Buf[0],length(Buf))
finally
zSRC.Free
end;
L.Delete(0)
end
finally
zL.Free;
zDest.Free
end
end
finally
L.Free
end
Вроде пакует все, но полученный в итоге файл не открывается ни WinZip ни чем другим. Что тут не так?
wicked (2005-01-31 17:11:00) [1]
> выходной формат zLib-компрессора не соответствует формату
> ZIP-архива
можно заставить, чтоб соответствовал... для этого нужно хитро проинициализировать компрессор - передать параметр windowBits в deflateInit2/inflateInit2 отрицательное число, например, стандартное -15...
как эта фича завернута в delphi - не знаю...
Digitman (2005-01-31 15:50:00) [2]
> как ему указать, что файлов-то - несколько?
никак.
выходной формат zLib-компрессора не соответствует формату ZIP-архива
Aleksandr. (2005-01-31 15:36:00) [3]Епрст... конечно, не понимают, я же пачку файлов загоняю, а не один. Только как ему указать, что файлов-то - несколько?