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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2015, 08:44   #1
z768
Пользователь
 
Регистрация: 21.11.2013
Сообщений: 45
По умолчанию gzip компонент Abbrevia

Вопрос по сжатию файлов в архив *.gz
Как изменить параметра сжатия ?

На форуме поддержки вопрос задал, но боюсь что долго буду ждать ответ.
В мануале и примерах ничего проясняющего не нашел.
Декомпрессия с дефолтными параметрами проходит на "ура".
z768 вне форума Ответить с цитированием
Старый 10.02.2015, 08:54   #2
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

из демо-примеров abbrevia
Код:
AbZipOutline1.CompressionMethodToUse := TAbZipSupportedMethod( тут видимо число от 1-9 );
ZuBy вне форума Ответить с цитированием
Старый 10.02.2015, 09:03   #3
z768
Пользователь
 
Регистрация: 21.11.2013
Сообщений: 45
По умолчанию

Это для *.zip
В примерах '*.gz' как-то обошли стороной.
z768 вне форума Ответить с цитированием
Старый 11.02.2015, 13:36   #4
z768
Пользователь
 
Регистрация: 21.11.2013
Сообщений: 45
По умолчанию

все устаканилось...
подключаем AbGzTyp.pas к проекту, смотрим rfc 1952 ....
и пару функций на startup...
Код:
function TAeForm.DeCompressGZip(Stream: TStream): TMemoryStream;
var
  GZ: TAbUnZipper;
begin
  GZ := TAbUnZipper.Create(nil);
  try
    GZ.ArchiveType := atGzip;
    GZ.ForceType := True;
    GZ.Stream := Stream;
    Result := TMemoryStream.Create;
    GZ.ExtractToStream(GZ.Items[0].FileName, Result);
  finally
    GZ.Free;
  end;
end;

function TAeForm.CompressGZip(Stream: TStream): TMemoryStream;
var
  GZ: TAbZipper;
begin
  GZ := TAbZipper.Create(nil);
  try
    GZ.ArchiveType := atGzip;
    GZ.ForceType := True;
    Result := TMemoryStream.Create;
    GZ.Stream := Result;
    GZ.AddFromStream('', Stream);
  finally
    GZ.Free;
  end;
end;

procedure TAeForm.UnZipClick(Sender: TObject);
var
  FS: TFileStream;
  GZ: TMemoryStream;
  ss: string;
begin
  if OpenDlg.Execute then
    begin
       FS := TFileStream.Create(OpenDlg.FileName, fmOpenRead);
      try
        GZ := DeCompressGZip(FS);
        GZ.SaveToFile('c:\AE\aaa.unz');
      finally
        FS.Free;
      end;
    end;
end;

procedure TAeForm.ZipClick(Sender: TObject);
var
  FS: TFileStream;
  GZ: TMemoryStream;
begin
  if OpenDlg.Execute then
    begin
      FS := TFileStream.Create(OpenDlg.FileName, fmOpenRead);
      try
        GZ := CompressGZip(FS);
        GZ.SaveToFile('c:\AE\bbb.zip');
      finally
        FS.Free;
      end;
    end;
end;

Последний раз редактировалось Stilet; 11.02.2015 в 14:16.
z768 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
gzip Ruslasy C# (си шарп) 7 13.06.2014 01:09
GZIP der90 PHP 3 29.04.2014 11:05
Замена Abbrevia компонентам Человек_Борща Компоненты Delphi 14 13.09.2013 14:18
gzip в браузерах Stilet Софт 17 24.11.2012 22:55
Неправильное магическое число в заголовке GZip. Передача должна идти в поток GZip. MyXa C# (си шарп) 0 19.08.2012 10:20