Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.84/285: Рейтинг темы: голосов - 285, средняя оценка - 4.84
 Аватар для [XandeR]
31 / 31 / 3
Регистрация: 18.03.2009
Сообщений: 381
Записей в блоге: 2

Как написать простейший архиватор?

29.07.2010, 18:54. Показов 54206. Ответов 45
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Необходимо написать программу -архиватор, степень сжатия неважна, лишь бы работало. Ничего интересного и понятного в интернете не нашел, на форуме тоже. Может у кого нибудь есть простой и понятный исходник архиватора, или подскажите что и где почитать, пжл.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.07.2010, 18:54
Ответы с готовыми решениями:

Как написать простейший калькулятор
Как написать простейший калькулятор?

Написать простейший текстовый редактор (есть код на Delphi)
Народ нужна ваша помощь, на Delphi делал ее, а на Builder C++ не получается, могу дать код с Delphi. Создать приложение, позволяющее: ...

Как написать свой простейший архиватор
Можно ли сделать свой "Архиватор"? То есть запустил прогу, там кнопочка "Выбрать файл", жмем на кнопку выбираем нужный файл, и он как...

45
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
06.08.2010, 17:56
Студворк — интернет-сервис помощи студентам
Для начала, можно попробовать и RLE реализовать, если уж на то пошло.
0
Эксперт С++
 Аватар для MikeSoft
3956 / 1811 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
06.08.2010, 18:17
Black Fregat, Хаффман лёгок в понимании... а вот в написании главное не запутаться при построении дерева (переписывать указатели на структуры соседних ветвей).

Когда учился в университете - пробовал реализовать этот метод без построения дерева ... Но тогда силёнок малость не хватило ... Удалил, начал с нуля ... со структурами дело пошло быстрее.

Я веду к тому, что если писать самостоятельно, то алгоритм очень интересный, в ходе написания можно узнать много нового.
0
 Аватар для [XandeR]
31 / 31 / 3
Регистрация: 18.03.2009
Сообщений: 381
Записей в блоге: 2
06.08.2010, 20:25  [ТС]
Black Fregat нет обвинять не буду, просто насчет гугла я специально пояснил в шапке а Вы меня все равно упрекли в этом)
теорию кодирования по Хаффману уже прочитал, не хочется больше голову ломать и читать другие

MikeSoft это Вы использовали код который дан здесь Исходник алгоритма Хаффмана на C ?
0
Эксперт С++
 Аватар для MikeSoft
3956 / 1811 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
06.08.2010, 20:34
[XandeR], нет, использовал свои работы ...
Не используйте то, что написали другие, если вы хотите разобраться в теме.
Попробуйте начать писать с нуля ... идеей и исправлениями мы, если что, поделимся...
0
 Аватар для [XandeR]
31 / 31 / 3
Регистрация: 18.03.2009
Сообщений: 381
Записей в блоге: 2
06.08.2010, 22:32  [ТС]
это верно..просто времени сейчас не очень много на написание с нуля, но я попробую
0
 Аватар для [XandeR]
31 / 31 / 3
Регистрация: 18.03.2009
Сообщений: 381
Записей в блоге: 2
13.08.2010, 16:10  [ТС]
совсем нет времени чтобы писать самому, я параллельно пишу программу для больницы взамен их старой, досовской. сроки поджимают, а архиватор мне тож нужен, до сентября((
MikeSoft если не жалко дайте свой исходник пжл, буду очень благодарен
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,702
14.08.2010, 09:01
У меня есть собственный архиватор и разархиватор *exe файлов. С исходниками. ТАм всё чисто и честно. ПОяснения тоже есть.

СОкращаются только последовательности из нолей. Могу дать. Но там DEV C++, вот какая штука...

Добавлено через 3 минуты
...Такого рода пояснения там:

//Теперь концепция сжатия файла.
//Известно, там много ненужных нолей, идущих подряд, благодаря файлововому выравниванию
//То есть ненужных нолей может быть и 20 и 30 и 500.
//С ними надо разобраться и куда-то их убрать, что ли
//Можно, конечно пройтись по заголовку файла, узнать количество секцций, их адреса и прочее и
//Плясать исходя из этой информации. Но я лучше просто по сермяжному пройдусь фо файлу, находя
//Последовательности нолей количеством, например 20 и более.
//(Эта величина определена в макросе)
//Все их зафиксирую, а потом уберу к
//чёртовой матери а при разжатии всё это учту и добавлю
0
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
14.08.2010, 09:56
kravam, и каков процент сжатия таким "методом"?
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,702
14.08.2010, 10:14
Процент прямо скажу небольшой

Но, во-первых, у меня в макросе задано количество нолей в последовательости 9. То есть обрабатываются все последовательности из 9-ти или более нолей. Если будет последовательность из восьми нолей, то она не обработается. Можно это значение в макосе изменить и посмотреть, но мне лень

Во-вторых, повторю, сжимаются только последовательности из нолей. Скажем, последовательносить из единиц сжата не будет какой бы длинной она не была

А в-третьих я не собираюсь тут устраивать соревнование ни с винраром ни с кем бы то ни было. Мне важно было написать архиватор-разархиватор, в принципе я справился. Совершенстовать нет желания да и времени ибо щас пишу прогу за обсуждение которой здесь по головке нге погладят.

А как подталкивание в нужном направлении мои исходники очень даже подойдут. Привет.
0
 Аватар для [XandeR]
31 / 31 / 3
Регистрация: 18.03.2009
Сообщений: 381
Записей в блоге: 2
14.08.2010, 18:20  [ТС]
хм, что такое DEV C++?
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,702
14.08.2010, 19:27
IDE .....
0
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
14.08.2010, 19:35
[XandeR], DEV C++ - это свободная среда разработки для C/C++.
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,702
14.08.2010, 19:39
Щас подумал, что вряд ли мне удасться сделать последолвательость кодируемых символв меньше. Ведь принцип такой: имеем последовательность из девяти нолей:
0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X00 0X00

Я её заменяю ппоследовательностью из 8-ми байт, где первые 4, допустим, адрес последовательности, вторые 4- количество знаков. Потом в конец файла эти 8 байтов пихаю и при разархивировании использую, а нули просто убираю. Экономится 1 байт. Ну, а если 8 нолей будет, сами понимаете экономии никакой. Так что 9- предел.

Как там делал Рошал, я не знаю. Тягаться с ним нет желания, скажу одно, у него тоже сжимаются именно последовательности- файл, где нет двух одинаковых символов, стоящих рядом, не сожмётся вообще
0
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
14.08.2010, 19:45
kravam, вам тогда нужен RLE. Я именно его сейчас пытаюсь реализовать. Сам алгоритм легкий, только я вот что-то запутался в нем.
0
 Аватар для [XandeR]
31 / 31 / 3
Регистрация: 18.03.2009
Сообщений: 381
Записей в блоге: 2
15.08.2010, 14:36  [ТС]
RLE действительно очень простой для понимания алгоритм, только вот как его применить к бинарным файлам, может подскажите? первое это мне нужно считать бинарный файл а потом каким то образом с ним оперировать т.е. получить доступ к каждому символу 1 или 0 т.е. Как вот это сделать незнаю(

Добавлено через 2 минуты
а вобще представить бинарный файл в виде символов можно?
.....
 Комментарий модератора 
Клавиша отправки сообщений заела, что-ли?
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,702
15.08.2010, 14:53
Эх, батенька, чё Вы в дебри-то полезли? Рано Вам ещё архиваторы писать.

Бинарный файл в виде символов представить можно. Для этого необходимо скачать откуда-нибудь шестнадцатиричные редактор, например hiew, PEBrowsePro или простенький HexEdit. ОТкрываешь ЛЮБОЙ файлв одной из этих прог и пожалуйста, файл как он есть в виде байтов.

Можно также выводить бинарный файл (в смысле не текстовый) в текстовый документ. Для этого надо написать небольшую программку. МОгу дать, но опять же под DEV C++ заточена

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

0X45= 01000101

Потом считываешь файл в строку, потом читаешь строку байт за байтом и вместо шестнадцатиричных значений выводишь ноли и единицы. В текстовый файл или на консоль.

Только зачем тебе это- ума не приложу
0
 Аватар для [XandeR]
31 / 31 / 3
Регистрация: 18.03.2009
Сообщений: 381
Записей в блоге: 2
15.08.2010, 15:14  [ТС]
ещё раз вопрос
"RLE действительно очень простой для понимания алгоритм, только вот как его применить к бинарным файлам, может подскажите?"

Добавлено через 13 минут
kravam а по поводу того что рано:
если я незнаю структуру файлов и операции с двоичными данными то это не значит что мне рано туда лезть или вообще не стоит. Вы, например, знаете как создать DirectX окно нарисовать в нем куб и заставить его вращатся? Вот если бы Вы такой вот вопрос задали, то я думаю никто не стал бы считать что Вы не достаточно умны для этого.
Конечно мне стоило бы почитать литературу на эту тему, но в данном случае просто нет не терпения не времени.
0
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
15.08.2010, 15:27
Давайте не отходит от темы, господа.
0
 Аватар для [XandeR]
31 / 31 / 3
Регистрация: 18.03.2009
Сообщений: 381
Записей в блоге: 2
17.08.2010, 23:28  [ТС]
MikeSoft дайте свой исходник пожалуйста, если можно.. Заранее спасибо
0
 Аватар для [XandeR]
31 / 31 / 3
Регистрация: 18.03.2009
Сообщений: 381
Записей в блоге: 2
19.08.2010, 23:03  [ТС]
ещё нужно...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.08.2010, 23:03
Помогаю со студенческими работами здесь

Как создать на Visual C++ Win 32 простейший Архиватор
Как создать на Visual C++ Win 32 простейший Архиватор Напишите пожалуста код, или дайте книгу или статью где - описано простой...

Простейший архиватор
Нужно написать простой архиватор. Который просто архивирует и разархивирует только файлы. Как его вообще писать?

Как написать архиватор.
Помогите написать архиватор, с чего начать?, какой метод архивирования лучше?

Как написать свой архиватор
Доброго времени суток. Собственно с помощью явы хочу написать простенький, может даже совершенно не оптимальный, но архиватор. Облазил весь...

Как написать простейший калькулятор?
я написал что то вроде этого: program calcus; uses crt; var a,b,c:integer; d:string; begin clrscr; writeln('vvedite cifru...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru