OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 12:03

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 101 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения: Re: Порт zlib
СообщениеДобавлено: Вторник, 24 Июнь, 2008 09:29 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
Штирлиц писал(а):
Возмите последнюю версию Zlib из SVN полностью


Ей и пользуюсь. ZlibTestzip.Test - создаёт файл test.zip, содержащий:
CompileOpt.txt
O3-Standard-Terms+Conditions.txt
Тест Рус.txt
Файлы спокойно просматриваются Фаром и 7zipом

ZlibTestzip.Test2 - удаляет первый файл.
Фар открывает архив, но просмотреть файлы не даёт. 7zip архив вообще не открывает, но и ошибок не выдаёт


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Порт zlib
СообщениеДобавлено: Вторник, 24 Июнь, 2008 10:01 

Зарегистрирован: Среда, 17 Январь, 2007 03:59
Сообщения: 225
Иван Горячев писал(а):
Штирлиц писал(а):
Возмите последнюю версию Zlib из SVN полностью


Ей и пользуюсь. ZlibTestzip.Test - создаёт файл test.zip, содержащий:
CompileOpt.txt
O3-Standard-Terms+Conditions.txt
Тест Рус.txt
Файлы спокойно просматриваются Фаром и 7zipом

ZlibTestzip.Test2 - удаляет первый файл.
Фар открывает архив, но просмотреть файлы не даёт. 7zip архив вообще не открывает, но и ошибок не выдаёт


Странно у меня все прекрасно работает после удаления.
7-zip 4.57, WinRAR 3.24, far 1.7 - все открывают и все показывают


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Порт zlib
СообщениеДобавлено: Вторник, 24 Июнь, 2008 11:29 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
7-zip 4.42. Может быть в этом проблема. Ладно, если ещё у кого-то вылезет - значит баг в подсистеме


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Порт zlib
СообщениеДобавлено: Среда, 25 Июнь, 2008 01:59 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
Штирлиц, небольшая просьба - комментируйте изменения для своих коммитов, пожалуйста. А то нифига непонятно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Порт zlib
СообщениеДобавлено: Среда, 25 Июнь, 2008 04:14 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
Иван Горячев писал(а):
7-zip 4.42. Может быть в этом проблема. Ладно, если ещё у кого-то вылезет - значит баг в подсистеме


Так, диагноз: При удалении из архива содержимое файла удаляется, но запись в центральном каталоге остаётся.


Вложения:
test-after-delete.zip [15.21 КБ]
Скачиваний: 286
test-before-delete.zip [15.69 КБ]
Скачиваний: 345
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Порт zlib
СообщениеДобавлено: Среда, 25 Июнь, 2008 08:20 

Зарегистрирован: Среда, 17 Январь, 2007 03:59
Сообщения: 225
Иван Горячев писал(а):
Иван Горячев писал(а):
7-zip 4.42. Может быть в этом проблема. Ладно, если ещё у кого-то вылезет - значит баг в подсистеме


Так, диагноз: При удалении из архива содержимое файла удаляется, но запись в центральном каталоге остаётся.


Можно по подробнее
test-after-delete.zip - у вас в файле 7-zip 4.42 - "видит" оставшуюся запись в центральном каталоге?
Я проверил - вроде все нормально удаляется и записей после удаления в центральном каталоге 2 остается
после первого удаления


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Порт zlib
СообщениеДобавлено: Среда, 25 Июнь, 2008 08:27 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
Штирлиц писал(а):
test-after-delete.zip - у вас в файле 7-zip 4.42 - "видит" оставшуюся запись в центральном каталоге?
Я проверил - вроде все нормально удаляется и записей после удаления в центральном каталоге 2 остается
после первого удаления


Нет. Он архив просто не открывает. Запись видна в Фаре по F3. При этом если удалять 7zipом - остаётся только две записи


Вложения:
test-after-delete-7zip.zip [15.15 КБ]
Скачиваний: 286
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Порт zlib
СообщениеДобавлено: Среда, 25 Июнь, 2008 11:24 

Зарегистрирован: Среда, 17 Январь, 2007 03:59
Сообщения: 225
Иван Горячев писал(а):
Штирлиц писал(а):
test-after-delete.zip - у вас в файле 7-zip 4.42 - "видит" оставшуюся запись в центральном каталоге?
Я проверил - вроде все нормально удаляется и записей после удаления в центральном каталоге 2 остается
после первого удаления


Нет. Он архив просто не открывает. Запись видна в Фаре по F3. При этом если удалять 7zipом - остаётся только две записи


Поправил DeleteEntry.
Похоже эта ошибка присутствует и в оригинале Aos.
Заодно и ZlibStrings.odc


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Порт zlib
СообщениеДобавлено: Четверг, 24 Июль, 2008 07:32 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
Положил на svn модуль StringsUtf - там правильные процедуры для работы с UTF-8


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Порт zlib
СообщениеДобавлено: Четверг, 24 Июль, 2008 10:17 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
Загнал тот же большой (142M) bmp в zip-архив (сжимал 7zip-ом, степень ultra). При разархивировании через подсистему получил ошибку -6 (ZlibZip.DataError). А тот же файл, сжатый со степенью normal распаковывается нормально. Я не знаю, является ли сжатие ultra у 7zipа стандартным, и можно ли считать это ошибкой в подсистеме. Так что сообщаю просто для информации.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Порт zlib
СообщениеДобавлено: Четверг, 24 Июль, 2008 10:49 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
Иван Горячев писал(а):
Загнал тот же большой (142M) bmp в zip-архив (сжимал 7zip-ом, степень ultra). При разархивировании через подсистему получил ошибку -6 (ZlibZip.DataError). А тот же файл, сжатый со степенью normal распаковывается нормально. Я не знаю, является ли сжатие ultra у 7zipа стандартным, и можно ли считать это ошибкой в подсистеме. Так что сообщаю просто для информации.

В ZIP (Deflate) стандартизирован только формат декодера, 7-zip пользуется этим и оптимизирует как-то сжатие, но так, чтобы оно удовлетворяло стандарту. Так что сложно определить, чья это ошибка... Попробуйте пораспаковывать тот же файл WinRAR (ZIP там от InfoZIP, если Рошал его сильно не менял) и другими архиваторами, которые используют ту же zlib...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Порт zlib
СообщениеДобавлено: Четверг, 24 Июль, 2008 10:53 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
Из других распаковщиков у меня только Windows. Открывает и распаковывает


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Порт zlib
СообщениеДобавлено: Вторник, 21 Октябрь, 2008 05:40 

Зарегистрирован: Среда, 17 Январь, 2007 03:59
Сообщения: 225
Коллеги, помогите выявить ошибку в Inflate.odc.
Inflate некорректно работает с файлами > 32768
положите .\Zlib\Rsrc\ вместо test_file.doc файл размером > 32768
(желательно > 1Мб) для проверки.
Соответственно поменять имя файла в Testzip.odc (функция Test)
Сам архив создастся корректно и читается WinRar или 7zip архивов.
Но вот распаковка фалов > 32768 проходит с ошибками Test5.
WinRar и 7zip все распаковывает без ошибок.
Ошибка похоже где-то в Inflate.odc
Я уже мозг сломал, что там не так (по сравнению с Aos)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Порт zlib
СообщениеДобавлено: Среда, 22 Октябрь, 2008 08:11 

Зарегистрирован: Среда, 17 Январь, 2007 03:59
Сообщения: 225
Нашёл, где ошибка
Ошибка в PROCEDURE InflateCodes (VAR s: Stream);
Код
| CodeStart: (* try fast inflation while enough space available *)
IF (wavail >= 258) & (s.in.avail >= 10) THEN
InflateFast(s, wavail);
IF s.res.code # ZC.Ok THEN
IF s.res.code = ZC.StreamEnd THEN s.decode.state := CodeWash
ELSE s.decode.state := CodeBad
END
END;
EXIT
END;
s.decode.tree := s.decode.lltree;
s.decode.state := CodeLen
Надо поправить вот так
| CodeStart: (* try fast inflation while enough space available *)
IF (wavail >= 258) & (s.in.avail >= 10) THEN
InflateFast(s, wavail);
IF s.res.code # ZC.Ok THEN
IF s.res.code = ZC.StreamEnd THEN s.decode.state := CodeWash
ELSE s.decode.state := CodeBad; EXIT
END
END
END;
IF s.decode.state # CodeWash THEN
s.decode.tree := s.decode.lltree;
s.decode.state := CodeLen
END

На файлах <= 32768 она не проявляется, а на >32768 иногда нет, иногда - да(чаще всего)

P.S. Исправленная версия ZLib прилагается.
В Bluebottle (A2) - ошибка тоже есть


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Порт zlib
СообщениеДобавлено: Воскресенье, 26 Октябрь, 2008 21:25 

Зарегистрирован: Среда, 17 Январь, 2007 03:59
Сообщения: 225
Еще одна ошибка в ZlibInflate
функция
Код:
PROCEDURE NeedOut (VAR s: Stream; VAR wavail: INTEGER): BOOLEAN;
BEGIN
  IF wavail = 0 THEN
    IF (s.write = WindowSize) & (s.read # 0) THEN
      s.write := 0; wavail := s.read - 1
    END;
    IF wavail = 0 THEN
      Flush(s);
      IF (s.write = WindowSize) & (s.read # 0) THEN
        s.write := 0; wavail := s.read - 1
      END;            
      IF wavail = 0 THEN
        RETURN FALSE
      END
    END
  END;
  RETURN TRUE
END NeedOut;   

должна быть поправлена на
Код:
PROCEDURE NeedOut (VAR s: Stream; VAR wavail: INTEGER): BOOLEAN;
BEGIN
  IF wavail = 0 THEN
    IF (s.write = WindowSize) & (s.read # 0) THEN
      s.write := 0; wavail := s.read - 1
    END;
    IF wavail = 0 THEN
      Flush(s);
      IF s.write < s.read THEN wavail := s.read - s.write - 1
      ELSE wavail := WindowSize - s.write
      END;
      IF (s.write = WindowSize) & (s.read # 0) THEN
        s.write := 0; wavail := s.read - 1
      END;            
      IF wavail = 0 THEN
        RETURN FALSE
      END
    END
  END;
  RETURN TRUE
END NeedOut;


Из-за этого функция
PROCEDURE Uncompress* (VAR src, dst: ARRAY OF Byte;
srcoffset, srclen, dstoffset, dstlen: INTEGER;
VAR len: LONGINT; VAR res: Result);
работает с ошибками, размер данных >32768
P.S. Исправленная версия ZLib прилагается.
В Bluebottle (A2) - ошибка тоже есть

[Модератор] с 20.10.2010 размещён: http://oberoncore.ru/bbcc/subs/zlib/


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Порт zlib
СообщениеДобавлено: Вторник, 28 Октябрь, 2008 14:22 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Интересно, кто ж это писал...
Код:
         WHILE k >= 16 DO
               INC(s1, ORD(buf[index])); INC(s2, s1); INC(index);
               INC(s1, ORD(buf[index])); INC(s2, s1); INC(index);
               INC(s1, ORD(buf[index])); INC(s2, s1); INC(index);
               INC(s1, ORD(buf[index])); INC(s2, s1); INC(index);
               INC(s1, ORD(buf[index])); INC(s2, s1); INC(index);
               INC(s1, ORD(buf[index])); INC(s2, s1); INC(index);
               INC(s1, ORD(buf[index])); INC(s2, s1); INC(index);
               INC(s1, ORD(buf[index])); INC(s2, s1); INC(index);
               INC(s1, ORD(buf[index])); INC(s2, s1); INC(index);
               INC(s1, ORD(buf[index])); INC(s2, s1); INC(index);
               INC(s1, ORD(buf[index])); INC(s2, s1); INC(index);
               INC(s1, ORD(buf[index])); INC(s2, s1); INC(index);
               INC(s1, ORD(buf[index])); INC(s2, s1); INC(index);
               INC(s1, ORD(buf[index])); INC(s2, s1); INC(index);
               INC(s1, ORD(buf[index])); INC(s2, s1); INC(index);
               INC(s1, ORD(buf[index])); INC(s2, s1); INC(index);
               DEC(k, 16)
         END;
            IF k # 0 THEN
               REPEAT 
                 INC(s1, ORD(buf[index]));
                 INC(s2, s1);
                 INC(index);
                 DEC(k)
               UNTIL k = 0;
            END;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Порт zlib
СообщениеДобавлено: Вторник, 28 Октябрь, 2008 14:50 

Зарегистрирован: Среда, 17 Январь, 2007 03:59
Сообщения: 225
Писал это я.
Не помню уже.
Кажется я скорость мерял вычисления.
Вернуть в оригинал забыл


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Порт zlib
СообщениеДобавлено: Вторник, 12 Октябрь, 2010 21:51 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Внезапно оказалось, что ZLib отказывается поддерживать русские имена файлов в BB 1.6 rc6. Ковыряния скрытого флага ZlibZIp.EFS вроде как включают поддержку UTF8 однако ни один из имеющихся в наличии архиваторов так и не смог прочесть файл. Есть вероятность(я пока не проверял) что сам ZLib самодельный архив понять сможет и извлечёт исходное имя файла без изменений. Но сам факт печалит :грусть-печаль:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Порт zlib
СообщениеДобавлено: Среда, 13 Октябрь, 2010 11:07 

Зарегистрирован: Среда, 17 Январь, 2007 03:59
Сообщения: 225
А в чем печаль? Исходники то все есть.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Порт zlib
СообщениеДобавлено: Среда, 13 Октябрь, 2010 16:26 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Ковыряние в исходниках стороннего компонента не совсем то, чего ожидаешь от компонента, выложенного на zinnamturm.eu


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 101 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB