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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2013, 22:35   #1
RageGod
Пользователь
 
Регистрация: 08.05.2012
Сообщений: 35
По умолчанию Склеивание и сжатие файлов

Добрый день. Столкнулся с проблемой.
Вообщем, есть .exe приложение, в ресурсы которого надо запихнуть 4 файла. Сначала думал сделать zip архив, добавить в ресурсы, вытаскивать из ресурсов и извлекать файлы из архива. Но т.к не нашел нормального компонента для Delphi 7 (с .dll файлами не предлагать) (а так же не интересует те, которые прибавляют по 50+ кб к файлу) для разархивирования, решил просто все 4 файла скрепить и ужать. Либо хотя бы ужать 1 файл. Этот файл не исполняемый, а значит было бы шикарный вариант ужать файл (чтобы на 50 % хотя бы ужался), добавить в ресурсы, извлечь из ресурсов, расжать обратно. Какой алгоритм посоветуете и вообще, что можете посоветовать?

Мне ну нужно делать zip архив, мне только распаковать хватит.
Копал в сторону LZ* функций (http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx), но не нашел метода распаковки.

Помогите.
RageGod вне форума Ответить с цитированием
Старый 30.04.2013, 08:07   #2
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,762
По умолчанию

А если просто сначала всё запихать в ресурсы, а потом сжать каким нибудь упаковщиком типа AsPack, PECompact и т.п.?
FaTaL вне форума Ответить с цитированием
Старый 30.04.2013, 09:14   #3
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Здесь можно взять упаковщик/распаковщик BZip2 для Дельфи, работающий без dll.
Модуль, не компонент, т.е установки не требуется.
Автор Edison Mera, взято с http://www.torry.net. Лицензия FWS (бесплатно).
Проверено, работает.

P.S. ссылка действительна до 01.06.2013

Последний раз редактировалось Прик; 30.04.2013 в 09:17.
Прик вне форума Ответить с цитированием
Старый 30.04.2013, 09:47   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

ZLibEx не плохо жмет.
FWZip от http://rouse.drkb.ru/ тоже хороший.
madZip - тоже вещь.

Обоим DLL'ки вообще не нужны.
Человек_Борща вне форума Ответить с цитированием
Старый 05.05.2013, 11:51   #5
fucil
Форумчанин
 
Регистрация: 24.02.2010
Сообщений: 148
По умолчанию согласен с Человек_Борща

да да,FWZip поюзай http://rouse.drkb.ru/components.php#fwzip сам им пользуюсь очень хорош !
fucil вне форума Ответить с цитированием
Старый 05.05.2013, 13:25   #6
RageGod
Пользователь
 
Регистрация: 08.05.2012
Сообщений: 35
По умолчанию

Цитата:
Сообщение от fucil Посмотреть сообщение
да да,FWZip поюзай http://rouse.drkb.ru/components.php#fwzip сам им пользуюсь очень хорош !
Я решил не юзать никакие модули и компоненты.
Сделал распаковку zip файла через VBS скрипт..
RageGod вне форума Ответить с цитированием
Старый 05.05.2013, 13:28   #7
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию

А не проще стандартными средствами delphi это сделать, кстати? (от embracadero)
Запаковать вручную, просто указав пути к файлам, само все запакует. А распаковка через Tmemorystream. Причем не такая сложная... И зипы не понадобятся.
alextrof94$gmail.com
alextrof94 вне форума Ответить с цитированием
Старый 20.05.2013, 01:06   #8
RageGod
Пользователь
 
Регистрация: 08.05.2012
Сообщений: 35
По умолчанию

Цитата:
Сообщение от alextrof94 Посмотреть сообщение
А не проще стандартными средствами delphi это сделать, кстати? (от embracadero)
Запаковать вручную, просто указав пути к файлам, само все запакует. А распаковка через Tmemorystream. Причем не такая сложная... И зипы не понадобятся.
Интересно и как?
Я использую Delphi 7.
RageGod вне форума Ответить с цитированием
Старый 20.05.2013, 08:20   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Я использую Delphi 7.
Даже в нем можно использовать стандартную виндовскую ZLib.
Код:
function compress(dest: pointer; destLen: longword; source: pointer; sourceLen: longword): longint; cdecl; external 'zlib.dll' name 'compress';
...
var f:TFileStream; a,b:Array of byte;dLen,sLen:DWord;
begin
 f:=TFileStream.Create(Имя файла,fmOpenRead);
  dLen:=f.size+(f.size div 120);
  sLen:=f.size;
  SetLength(a,sLen);
  SetLength(b,dLen);
  f.read(a[0],f.Size);
  compress(@b[0],@dLen,@a[0],sLen);
 f.free;
 f:=TFileStream.Create(Имя упакованного файла,fmCreate);
  f.write(b[0],dLen);
 f.free;
end;
Это просто пример сжатия одного файла (писал с потолка, не проверял, но на основе своих проектов). Для пакетного сжатия его нужно чуть-чуть преобразовать.
I'm learning to live...

Последний раз редактировалось Stilet; 20.05.2013 в 08:22.
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Склеивание таблиц из разных файлов в один zenner Microsoft Office Excel 16 04.05.2011 23:11
Склеивание WAV-файлов Nehalem Мультимедиа в Delphi 3 04.02.2011 01:09
макрос для склеивание двух текстовых файлов zenner Microsoft Office Word 1 09.10.2009 14:16
обновление в блоге - СКЛЕИВАНИЕ ФАЙЛОВ Pblog Обсуждение статей 0 07.08.2007 12:41
сжатие исполняемых файлов SuperVisor Софт 8 26.03.2007 21:40