как оценить размер архива до(без) его архивирования с помощью Vclzip

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

namomelkor
Сообщения: 230
Зарегистрирован: 31 авг 2006, 13:11

архивирую файлы при помощи компоненты Vclzip

как узнать размер будующего архива?
Absurd
Сообщения: 1228
Зарегистрирован: 26 фев 2004, 13:24
Откуда: Pietari, Venäjä
Контактная информация:

namomelkor писал(а):архивирую файлы при помощи компоненты Vclzip

как узнать размер будующего архива?
Никак. Можно заархивировать, посмотреть размер, удалить, а потом снова архивировать с красивым прогресс-баром.
2B OR NOT(2B) = FF
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

а зачем?? прогрессор можно отрисовать по исходному объёму ;)
Изображение
namomelkor
Сообщения: 230
Зарегистрирован: 31 авг 2006, 13:11

Игорь Акопян писал(а):а зачем?? прогрессор можно отрисовать по исходному объёму ;)
прогрес бар не нужен. Нужно узнать хватит ли места на диске для архива. А вариант с подсчетом размера исходных файлов не подходит.
Absurd
Сообщения: 1228
Зарегистрирован: 26 фев 2004, 13:24
Откуда: Pietari, Venäjä
Контактная информация:

namomelkor писал(а):прогрес бар не нужен. Нужно узнать хватит ли места на диске для архива. А вариант с подсчетом размера исходных файлов не подходит.
На каком диске? Если беспокоит вопрос с архивированием на съемный диск, то можно архивировать во временный файл ( GetTempFileName(...) ), а потом копировать его на съемный диск, предварительно проверив свободное место. Беспокоиться отновительно места на HDD не стоит - если оно закончится, то система вообще работать не обязана.
2B OR NOT(2B) = FF
namomelkor
Сообщения: 230
Зарегистрирован: 31 авг 2006, 13:11

1. Нужна проверка свободного места на ftp (на ftp отсылаются архивы)
2. проверка свободного места на указаном пользователем диске.

также предархивирование занимает много времени а в моей системе это совсем не желательно.
Допусим человек хочет отослать на ftp 2-3 гига информации которая в архивированом виде займет 300 метров. А на ftp свободно 250. Ему сначала нужно проверить хватит ли места. Если не хватает то он удаляет часть отсылаемых файлов и опять проверяет свободное место. И какдый раз мне придется архивиновать эти 2-3гига пользователь так состарится ))))
Аватара пользователя
SergeyS
Сообщения: 196
Зарегистрирован: 21 ноя 2006, 17:12
Откуда: Хакасия, Абакан
Контактная информация:

архивирую файлы при помощи компоненты Vclzip. как узнать размер будующего архива?
Статистика рулит! Прикинь тип данных отправляемых на сервер, пожми данные, посмотри на ско-ко изменился размер, повтори так несколько раз с разными типами файлов (из списка тех, что будут отсылаться), выведит коэфициент с запасом и прогнозируй :)
namomelkor
Сообщения: 230
Зарегистрирован: 31 авг 2006, 13:11

Статистика совсем не рулит ))) Мне всегда про статистику вспоминается одна история:
Например по статистике одного человека можно накормить половиной курицы тогда если есть 1млн человек и пол млн куриц можно говорит что все сыты(вот так и у нас в стране происходит ))) ).

Я выделяю для пользователя на фтп место только логически т.е в какойто переменной содержится доступное для него место(друго возможнисти нет и скорее всего не будет). И если отправлятть файлы по статистике то либо человек сможет залить файлов больше чем его доступное место либо гораздо меньше такой вариант совсем не подходит. (на сервер могут отправлятся совершенно любые данные и даже если сделать коэффициенты для всех типов файлов которые мне известны то это не решит проблему т.к расширение файла можно поменять на людое дгугое а коэф сжатия от этого не изменится. А писать проверку типа файла по его содержанию довольно сложно и того не стоит)
Аватара пользователя
SergeyS
Сообщения: 196
Зарегистрирован: 21 ноя 2006, 17:12
Откуда: Хакасия, Абакан
Контактная информация:

Насколько я тебя понял, то загрузка файлов на сервер осуществляется через твою программу, которая помимо всего прочего архивирует файлы в один большой архив и размещает его на сервере? А если тебе создавать не один большой архив, а много маленьких (один архив для одного файла), и размещать уже эти маленькие архивы. Данные тогда будут архивироваться один раз, ты расчитываешь свободное место и помещаешь туда только те файлы которые влазят. Если смущают мелкие файлы, так их потом можно в режиме store оформить в одни большой файл, но это уже думаю лишнее.
namomelkor
Сообщения: 230
Зарегистрирован: 31 авг 2006, 13:11

У меня и так каждый файл архивируется в отдельный архив а архивы больше 5-ти Мб бьются по частям. Но всеравно нужно отправлять все файлы сразу. Точнее если файлы не влазят то отбрасывать лишние должет пользователь а не софт.
Ответить