![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 24.01.2011
Сообщений: 41
|
![]()
В zip архиве находится текстовый файл. Без сжатия он весит 2,8 гб, а в архиве - 2,53 мб, тоесть почти в 1000 раз меньше.
Задача: дать моей программе доступ к файлу не извлекая его из архива, так как это занимает много времени. Разсмотрю любые варианты. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
а кроме как извлечь вариантов нет, тем более при такой степени сжатия.
максимум извлечь в память, да вот памяти у вашей проги не хватит ![]() Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 24.01.2011
Сообщений: 41
|
![]()
Я розбил текстоый файл на части и теперь они весят по 500мб.
Думаю загрузить в ОЗУ - самый лучший вариант. Тем более грузить все сразу не нужно. Достаточно сначала одного, потом я первый выгружу и загружу второй и т.д. Желательно не извлекать, так как файл постоянно считывается и перезаписывается в Real time режиме. Это мне нужно для подгрузки игрового мира. Он огромен и потому столько весит, но на экран выводится только крошечная его часть. имхо, лучше пользоваться System.ZLib, жмёт как зип, и даёт полный контроль над данными Что означает System.ZLib? Я что то на вкладке System не нахожу такого компонента. Последний раз редактировалось Stilet; 18.06.2012 в 19:47. |
![]() |
![]() |
![]() |
#4 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Впрочем в случае с Делфи: http://docwiki.embarcadero.com/Libraries/en/System.ZLib
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#5 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Могу только показать как я с РАРом работаю
![]() P.S. Йоу!!! Да что же это с часами случилось?
I'm learning to live...
Последний раз редактировалось Stilet; 18.06.2012 в 22:08. |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
вам принципиально нужен архив?
и зачем текстовый файл? может лучше бинарный? О_О, и правда чтото с часами. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 24.01.2011
Сообщений: 41
|
![]()
А, понятно.
|
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 24.01.2011
Сообщений: 41
|
![]()
Пробовал, смотрел кучу примеров, никак не могу найти как работать напрямую с архивом.
Подскажите или дайте код. Оч нужно |
![]() |
![]() |
![]() |
#9 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,899
|
![]()
Вы бы лучше предоставили то, что у вас в виде единицы мира , например запись или ещё что, и то как записываете сам файл, полагаю Вы что-то замудрили, и у Вас много лишнего. В особо тяжелом случае я бы написал конвертер и уже конвертированный файл парсил прогой.
А всё почему - я не верю в объем данных для игрового мира в 3 млрд байт, даже если мир по 2 измерениям по 10 тысяч ячеек (что ппц анриал) то всё равно тяжело верится в 30 байт на 1 клетку. Подавляющее количество игровой инфы о клетке можно хранить в 1 байте, а не в интеджере или упаси бог в строках (раз уж про текстовый файл дело зашло). В частных случаях инфу вроде флагов вообще хранят в битах одного байта . Ну и хэдшот - то что файл сжимается в 1000+ раз уже говорит, что косяк прежде всего в формате хранения данных. Могу даже привести личный пример. данные для проги 144*144*10 записей, хранились в ини-файле (считай ещё тысячи переводов строки, каждый по 2 байта), каждая запись в районе 40-50 байт - и то весь файл чесил 17,5 мб, и сжимался он до 2,8мб. |
![]() |
![]() |
![]() |
#10 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
![]()
Действительно.
При наличии достаточно сложного мира обычно пользуются теми или иными древовидными структурами (Q-tree, R-tree, etc.). Оно позволяют одновременно: 1. Уменьшить объем данных. 2. Радикально ускорить поиск нужного. 3. Радикально уменьшить объем памяти для нормальной работы с огромными массивами данных. Вы бы написали, что и как делаете, может, сжимать вообще ничего не придется. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Код распаковки 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 |