|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
12.01.2016, 00:49 | #1 |
Новичок
Джуниор
Регистрация: 10.04.2015
Сообщений: 733
|
Когда открываешь txt файл в рар архиве и изменяешь его и обратно сохраняешь в тот же архив, возможно ли сделать замену чтобы на все файлы?
или может быть вирус можно сделать который сделает замену ну то есть Replace("",""); Последний раз редактировалось Stilet; 12.01.2016 в 09:17. |
12.01.2016, 09:18 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Без перераспаковки всего врядли получится. Не думаю что РАР способен на такое.
I'm learning to live...
|
12.01.2016, 09:26 | #3 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
согласен с Виталием.
я даже больше скажу, когда "открываешь txt файл в рар архиве и изменяешь его и обратно сохраняешь в тот же архив" файл сначала распаковывается во временную папку, там его можно изменить, после, если файл изменился, архиватор его запаковывает в архив, заменяя тот файл, что был в архиве ранее (используя стандартную опция любого архиватора по обновлению файлов в архиве). Никаких "сделать замену чтобы на все файлы" не получится. ещё раз. по шагам. Шаг один. Распаковываешь то, что нужно изменять в архиве. Шаг два. Изменяешь то, что нужно в этих распакованных файлах. Шаг три. Запаковываешь то, что изменил в архив. шаг один и шаг три выполняются при использовании архиватора. Есть ещё вопросы? |
12.01.2016, 09:49 | #4 | |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Цитата:
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
|
12.01.2016, 11:14 | #5 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Попробую пояснить для товарисча на примере из Алисы.
Я, если добавляю к архиву файл (редактирую или просто дописываю - не важно) перепаковываю архив: Код:
Список должен обязательно существовать до вызова этого метода. Иначе архив не создастся. Поэтому приходится все распакованное, сколько бы оно не занимало, хранить отдельно. вот така чухня, малята... Думаю что и в РАРе дела обстоят не лучше. Могу конечно ошибаться, но это нужно спецификацию по рару смотреть.
I'm learning to live...
|
12.01.2016, 11:47 | #6 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
И как это объясняет необходимость распаковать весь архив для обновления 1 файла? Реализация CreateInArchive и класса возвращаемого им объекта не показана.
В предыдущей теме была ссылка на описание консольной команды винрара для добавления/обновления файла в архив. И в 7z тоже есть, я когда-то писал небольшую утилиту для создания zip архива с помощью 7za (консольный), файлы для простоты добавлялись по одному. А проверить осуществимость этого просто — создать архив на несколько ГБ винраром (и zip, и rar) и добавить туда новый файл, увидеть что это занимает несколько секунд, а не минут. И с 7z (zip, 7z) это тоже работает.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. Последний раз редактировалось Alex11223; 12.01.2016 в 12:08. |
12.01.2016, 12:15 | #7 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Немного лучше. На полноту информации не претендую, но в РАРе есть таблица ссылок на упакованные файлы. Распаковывается только один выбранный файл. Если его размер не изменился после редактирования, он запаковывается на то-же место. Если размер изменился, то на прежнее место запаковывается всё, что соответствует размеру, а остаток запаковывается в "хвост" архива. При этом в экстент таблицы добавляется адрес этого "хвоста". Поэтому скорость упаковки намного выше, чем переупаковка всего архива. Как это реализовано на программном уровне не помню. Но где-то примерно так как описал.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
12.01.2016, 20:22 | #8 |
Новичок
Джуниор
Регистрация: 10.04.2015
Сообщений: 733
|
Да пусть без распаковки нельзя, ладно, но можно же сделать вирус или софт который будет запущен в архиве чтобы сделать рас- и запаковку простого текста в txt замену что -то на что-то ? Чтобы когда я его запускаю в архиве то Replace будет на все txt в данном архиве....
Последний раз редактировалось komra2; 12.01.2016 в 20:26. |
12.01.2016, 21:05 | #9 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Это не вирус, а чтобы понять возможно ли это надо изучать спецификацию выбранного формата (если она доступна, то есть zip или 7z, а rar отпадает, разве что вы и реверс-инжинирнгом займетесь).
zip — http://www.iso.org/iso/home/store/ca...csnumber=60101 7z — "The 7z file format specification is distributed with 7-Zip's source code. The specification can be found in plain text format in the 'doc' sub-directory of the source code distribution." rar (только распаковка) — http://www.rarlab.com/technote.htm Думаете это проще, чем распаковать и запаковать обычным способом? И чем это лучше? Или он с паролем, как и тот PDF? Тогда скорее всего в любом случае в очередной раз обломаетесь.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. Последний раз редактировалось Alex11223; 12.01.2016 в 21:13. |
12.01.2016, 21:32 | #10 |
Новичок
Джуниор
Регистрация: 10.04.2015
Сообщений: 733
|
нет, не pdf, никого отношение к нему данный вопрос не имеет..
То есть с этим облом "софт который будет запущен в архиве чтобы сделать рас- и запаковку простого текста в txt замену что -то на что-то ?" Последний раз редактировалось Stilet; 13.01.2016 в 09:38. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Zip-архив | RUSlan48 | Общие вопросы Delphi | 7 | 20.02.2014 01:44 |
Файл + архив | demon-sheff | Общие вопросы Delphi | 11 | 25.06.2013 06:25 |
Архив | xakkkkker | Общие вопросы Delphi | 1 | 09.03.2010 21:10 |
Архив | xakkkkker | Общие вопросы Delphi | 4 | 04.01.2010 18:49 |
Архив | PAVEL315 | Общие вопросы Delphi | 8 | 20.04.2008 19:14 |