![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
KolBZip2
BMouradov © (2007-07-07 18:27:00)Господа, помогите, пожалуйста, с компонентом KolBZip2. На простом примере получаю Access Violation:
var i: integer;
Buf: array[0..1023] of char;
begin
InStream := NewReadFileStream(InFile);
OutStream := NewWriteFileStream(OutFile);
CStream := NewBZCompressionStream(bs9, OutStream);
repeat
i := InStream.Read(Buf, SizeOf(Buf));
CStream.Write(Buf, i); <-- Access Violation
until i = 0;
При первом же вызове Write получаю ошибку. При трассировке увидел нечто странное - Delphi не проваливался во Write, а в NewBZCompressionStream первой строчкой идёт Result:= PBzCompressionStream(NewCustomBzip2Stream(Dest));, т.е. создается один компонент, а используется как другой. Мне кажется, здесь ошибка. То же самое и при декомпрессии. Помогите исправить.
Monty (2007-07-11 00:45:00) [1]Скорее всего TCabFile использует cabinet.dll
Я тестировал около года два-три назад сжатие zip, rar и cab'ом ... последний был всегда лучше zip'а и не уступал rar'у ... возможно сейчас что-то изменилось, но не сам формат "cab" ...
Vladimir Kladov (2007-07-10 15:48:00) [2]Вообще-то самый компактный вариант это TCabFile (KOLadd). Практически не добавляет кода (пара Кб? Не проверял, но должно быть меньше). А жмёт очень прилично, иногда лучше zip, а иногда даже лучше rar'а.
ANTPro (2007-07-10 14:08:00) [3]LZMA, есть еще, если нужно хорошее сжатие (Уровень RAR). Но нужна dll(для сжатия) 96кб вроде. Если только распаковка тогда этот вариант всех уделает :)
BMouradov (2007-07-09 00:58:00) [4]> KolZlib, Zlib, Z - 595Кб 1,4 сек 0,3 сек
> Bzip2 - 460Кб 0,3 сек 0,1 сек
Я извиняюсь, перепутал, по времени всё наоборот:
файл 2400Кб (метод, размер, упаковка, распакова, добавочный размер):
KolZlib, Zlib, Z - 595Кб 0,3 сек 0,1 сек +33Кб
Bzip2 - 460Кб 1,4 сек 0,3 сек +40Кб
BMouradov (2007-07-09 00:54:00) [5]Попробовал - на том же файле выдал 660 Кб. Так что совсем не катит.
=BuckLr= (2007-07-08 21:06:00) [6]
> Можно еще UCL попробовать. Быстро работает и мало кода к
> EXE прибавляет. Жмет как ZIP.
Что мало кода, верно. Но когда я тестил, обратил внимание, что жмёт сильно похуже zlib'а. Однако
ANTPro (2007-07-08 15:04:00) [7]> [6] BMouradov (08.07.07 14:03)
Можно еще UCL попробовать. Быстро работает и мало кода к EXE прибавляет. Жмет как ZIP.
=BuckLr= (2007-07-08 15:00:00) [8]
> KolZlib
CompressBuf не пашет, имейте в виду.
BMouradov (2007-07-08 14:03:00) [9]Забыл сказать, что
KolZlib, Zlib, Z - добавляют 33Кб к размеру программы
Bzip2 - 40Кб
BMouradov (2007-07-08 13:58:00) [10]Да, этот компонент работает, спасибо.
Наверное, авторам все равно следует или исправить или удалить тот компонент.
Искал, чем сжать файл с данными, не используя внешних dll.
Если кому интересно:
файл 2400Кб (метод, размер, упаковка, распакова, процессор целерон 2.6):
KolZlib, Zlib, Z - 595Кб 1,4 сек 0,3 сек
Bzip2 - 460Кб 0,3 сек 0,1 сек
Для сравнения, внешними архиваторами:
zip - 590Кб
rar - 400Кб
D[u]fa (2007-07-08 13:00:00) [11]посмотрел компонент. там явно ошибки или несовместимость с текущей версией, пробуй компонент что посоветовали
Дмитрий К (2007-07-08 11:06:00) [12]KOLBZip2 обязательно использовать?
http://www.kolnmck.ru/files/components/compress/zlibbzip.7z
BMouradov (2007-07-08 02:40:00) [13]Нет, не пойдет - прежде чем выводить, надо сначала сжать.
D[u]fa (2007-07-07 20:08:00) [14]мб надо OutStream.Write?