Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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?


Наверх

Титульная страница Поиск, карта сайта Написать письмо