Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2012, 16:48   #1
Nikk[UA]
Пользователь
 
Регистрация: 24.01.2011
Сообщений: 41
По умолчанию Чтение с zip архива

В zip архиве находится текстовый файл. Без сжатия он весит 2,8 гб, а в архиве - 2,53 мб, тоесть почти в 1000 раз меньше.

Задача: дать моей программе доступ к файлу не извлекая его из архива, так как это занимает много времени.

Разсмотрю любые варианты.
Nikk[UA] вне форума Ответить с цитированием
Старый 18.06.2012, 16:52   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а кроме как извлечь вариантов нет, тем более при такой степени сжатия.
максимум извлечь в память, да вот памяти у вашей проги не хватит.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 18.06.2012, 17:38   #3
Nikk[UA]
Пользователь
 
Регистрация: 24.01.2011
Сообщений: 41
По умолчанию

Я розбил текстоый файл на части и теперь они весят по 500мб.
Думаю загрузить в ОЗУ - самый лучший вариант. Тем более грузить все сразу не нужно. Достаточно сначала одного, потом я первый выгружу и загружу второй и т.д.

Желательно не извлекать, так как файл постоянно считывается и перезаписывается в Real time режиме.

Это мне нужно для подгрузки игрового мира. Он огромен и потому столько весит, но на экран выводится только крошечная его часть.

имхо, лучше пользоваться System.ZLib, жмёт как зип, и даёт полный контроль над данными

Что означает System.ZLib?

Я что то на вкладке System не нахожу такого компонента.

Последний раз редактировалось Stilet; 18.06.2012 в 19:47.
Nikk[UA] вне форума Ответить с цитированием
Старый 18.06.2012, 19:51   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
System.ZLib
Это не компонент а пространство имен http://krez0n.org.ua/archives/1108
Впрочем в случае с Делфи: http://docwiki.embarcadero.com/Libraries/en/System.ZLib
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.06.2012, 22:04   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Могу только показать как я с РАРом работаю

P.S. Йоу!!! Да что же это с часами случилось?
I'm learning to live...

Последний раз редактировалось Stilet; 18.06.2012 в 22:08.
Stilet вне форума Ответить с цитированием
Старый 18.06.2012, 22:11   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

вам принципиально нужен архив?

и зачем текстовый файл? может лучше бинарный?

О_О, и правда чтото с часами.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 19.06.2012, 01:09   #7
Nikk[UA]
Пользователь
 
Регистрация: 24.01.2011
Сообщений: 41
По умолчанию

А, понятно.
Nikk[UA] вне форума Ответить с цитированием
Старый 19.06.2012, 01:28   #8
Nikk[UA]
Пользователь
 
Регистрация: 24.01.2011
Сообщений: 41
По умолчанию

Пробовал, смотрел кучу примеров, никак не могу найти как работать напрямую с архивом.

Подскажите или дайте код. Оч нужно
Nikk[UA] вне форума Ответить с цитированием
Старый 19.06.2012, 18:44   #9
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Вы бы лучше предоставили то, что у вас в виде единицы мира , например запись или ещё что, и то как записываете сам файл, полагаю Вы что-то замудрили, и у Вас много лишнего. В особо тяжелом случае я бы написал конвертер и уже конвертированный файл парсил прогой.

А всё почему - я не верю в объем данных для игрового мира в 3 млрд байт, даже если мир по 2 измерениям по 10 тысяч ячеек (что ппц анриал) то всё равно тяжело верится в 30 байт на 1 клетку. Подавляющее количество игровой инфы о клетке можно хранить в 1 байте, а не в интеджере или упаси бог в строках (раз уж про текстовый файл дело зашло). В частных случаях инфу вроде флагов вообще хранят в битах одного байта .
Ну и хэдшот - то что файл сжимается в 1000+ раз уже говорит, что косяк прежде всего в формате хранения данных.

Могу даже привести личный пример.
данные для проги 144*144*10 записей, хранились в ини-файле (считай ещё тысячи переводов строки, каждый по 2 байта), каждая запись в районе 40-50 байт - и то весь файл чесил 17,5 мб, и сжимался он до 2,8мб.
phomm вне форума Ответить с цитированием
Старый 19.06.2012, 19:16   #10
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Действительно.
При наличии достаточно сложного мира обычно пользуются теми или иными древовидными структурами (Q-tree, R-tree, etc.). Оно позволяют одновременно:
1. Уменьшить объем данных.
2. Радикально ускорить поиск нужного.
3. Радикально уменьшить объем памяти для нормальной работы с огромными массивами данных.
Вы бы написали, что и как делаете, может, сжимать вообще ничего не придется.
s-andriano вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Код распаковки ZIP-архива стал выдавать ошибку Maxx Microsoft Office Excel 1 23.10.2014 07:35
Чтение из ZIP-файла "на лету" (и ещё BASS/BASSMOD) Wanderer_r Мультимедиа в Delphi 3 20.03.2010 21:14
Чтение, чтение и еще раз чтение Alex Cones Общие вопросы Delphi 3 07.06.2009 15:28
Можно ли открыть на чтение файл.txt из архива rar или zip. slips Общие вопросы Delphi 6 06.02.2009 23:51
Zip Witaliy PHP 1 11.07.2008 17:33