![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Marlin |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 20.2.2006 Репутация: нет Всего: 1 |
этот исходник я взял на этом форуме, но вот возникла неожиданно проблема.
Когда упаковываю, то каталоги, где слишком маленькие файлы просто не сохраняются в архив. Я сохраняю базы 1с так вот каталоги пользователей usr1 usr2 и т.д. просто при распоковки проподают, помогите в чем проблема. Код архиватора:
Код Разархиватора:
И еще проблема, когда распакуешь архивный файл и начинаешь подгружать базу из 1с, программа выдает не могу прочесть значение из памяти ......., пока не закроешь архиватор, базу подгрузить не возможно Это сообщение отредактировал(а) Marlin - 17.4.2006, 07:02 --------------------
Программист решает проблемы, о которых пользователь даже не задумывается,способами, о котороых он даже не подозревает. |
||||
|
|||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
1. Ты проверяешь код ошибки, который возвращют функции?
Если что-то не так. Должен быть код ошибки. Какой? 2. fs := TFileStream.Create(s, fmOpenRead or fmShareCompat); Замени fmShareCompat на fmShareDenyWrite. Или на худой конец вообще на fmShareDenyNone. Я так подозреваю, что ты жмешь одинэсовские файлы, не закрывая сам 1С... Если так, то ничего удивительного в том, что некоторые файлы заблокированы и не пакуются. В этом случае, возвращаемая ошибка, будет ERR_FILES. |
|||
|
||||
Marlin |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 20.2.2006 Репутация: нет Всего: 1 |
нет 1с я закрываю.
Попробывал зажать 7 файлов doc, а при распаковки получилось три. Зжимает без ошибок и главное показывает в строке состояния, что сжимает все файлы. fs := TFileStream.Create(s, fmOpenRead or fmShareCompat); сейчас заменю --------------------
Программист решает проблемы, о которых пользователь даже не задумывается,способами, о котороых он даже не подозревает. |
|||
|
||||
Marlin |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 20.2.2006 Репутация: нет Всего: 1 |
Заменил, но все то же самое.
Не могу понять где ошибка --------------------
Программист решает проблемы, о которых пользователь даже не задумывается,способами, о котороых он даже не подозревает. |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
А ты этот: http://forum.vingrad.ru/index.php?showtopi...st&p=652493 пример пробовал применить без изменений?
|
|||
|
||||
Marlin |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 20.2.2006 Репутация: нет Всего: 1 |
я его и использую, только свои строки в коде добавил для програсса
Добавлено @ 11:10 Может дело в функции разархивирования. --------------------
Программист решает проблемы, о которых пользователь даже не задумывается,способами, о котороых он даже не подозревает. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Marlin, проверь по размеру результирующего файла, все ли записалось.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
При распаковке, исправь строчку 36 на
И что говорит ShowMessage(ArcErrorText(UnPackDir('....', '....'))); ? |
|||
|
||||
Marlin |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 20.2.2006 Репутация: нет Всего: 1 |
Архив вроде формирует нормальный. А когда распаковывает фигня какя-то
Добавлено @ 11:21 щас попробую Добавлено @ 11:25 говорит готово. У меня программа на следующий этап не переходит без этого --------------------
Программист решает проблемы, о которых пользователь даже не задумывается,способами, о котороых он даже не подозревает. |
|||
|
||||
Marlin |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 20.2.2006 Репутация: нет Всего: 1 |
if sz > 0 then ts.CopyFrom(ds, sz); - ничего не дало
--------------------
Программист решает проблемы, о которых пользователь даже не задумывается,способами, о котороых он даже не подозревает. |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
||||
|
||||
Marlin |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 20.2.2006 Репутация: нет Всего: 1 |
спасибо. Буду смотреть
--------------------
Программист решает проблемы, о которых пользователь даже не задумывается,способами, о котороых он даже не подозревает. |
|||
|
||||
Marlin |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 20.2.2006 Репутация: нет Всего: 1 |
Я накидал только несколько функций для архивирования в новом модуле. Посмотрите пож-та нужно протестить. У меня никак не может устраниться эта проблема.
При упаковке показывает, что файлы все упаковываются, а при распаковке часть файлов пропадает и в конце выдает ошибку. Этот код нужен позарез. Файл прикрепил Присоединённый файл ( Кол-во скачиваний: 6 ) ![]() --------------------
Программист решает проблемы, о которых пользователь даже не задумывается,способами, о котороых он даже не подозревает. |
|||
|
||||
Marlin |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 20.2.2006 Репутация: нет Всего: 1 |
Ошибка возникает только тогда, когда запуск программы осуществляется из делфи, когда запускаешь exe-ник все нормально, только файлы не все распаковываются
--------------------
Программист решает проблемы, о которых пользователь даже не задумывается,способами, о котороых он даже не подозревает. |
|||
|
||||
Marlin |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 20.2.2006 Репутация: нет Всего: 1 |
Попробуйте запаковать маленькие и большие файлы, обычно маленькие файлы пропадают
--------------------
Программист решает проблемы, о которых пользователь даже не задумывается,способами, о котороых он даже не подозревает. |
|||
|
||||
Snowy |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Нашёл.
3 глюки: 1. Из-за кэширования файла декомпрессором выход из цикла происходил раньше времени. Для больших файлов эта ошибка не возникает - только для мелких, которые легко глотаются кэшем декомпрессора. 2. Не все файлы имеют аттрибут Archive. 3. Файлы нулевой длины не создаются. Также не создаются каталоги в которых нет файлов. Но это не было предусмотрено задачей. Итак: В компрессоре изменяем строку
Декомпрессор правим цикл:
|
||||||
|
|||||||
Marlin |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 20.2.2006 Репутация: нет Всего: 1 |
Snowy - ты просто супер!!!!
надеюсь я когда-нибудь дорасту до твоего уровня!!! Добавлено @ 11:57 Никогда бы не подумал про этот кэш! Спасибо тебе большое. И еще хочу спросить вот строка в комперессоре
зачем нужна эта точка. Это ведь аттрибут "faHidden" т.е. скрытый файл, но все равно все файлы туда попадают - вот это мне не ясно --------------------
Программист решает проблемы, о которых пользователь даже не задумывается,способами, о котороых он даже не подозревает. |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Просто при переборе FindFirst-FindNext в список попадают каталоги '.' и '..' - корень диска и каталог выше.
Мы же не хотим компресить весь диск ![]() |
|||
|
||||
Marlin |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 20.2.2006 Репутация: нет Всего: 1 |
а это типа как в старые добрые времена в досе!!
--------------------
Программист решает проблемы, о которых пользователь даже не задумывается,способами, о котороых он даже не подозревает. |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Ну так винда это и есть DOS. Только версия сильно подросла.
|
|||
|
||||
Marlin |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 20.2.2006 Репутация: нет Всего: 1 |
ну да впринципе ты прав
--------------------
Программист решает проблемы, о которых пользователь даже не задумывается,способами, о котороых он даже не подозревает. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |