Каким образом использовать frxGZipCompressor ?

отредактировано 20:09 Раздел: FastReport 3.0
Приведите пример, если можно !

Комментарии

  • отредактировано 20:09
    Если ты хочешь просто сжимать\расжимать данные то используй функции:
    procedure frxCompressStream(Source, Dest: TStream; Compression:                             TfrxCompressionLevel = gzDefault; FileName: String = '');  
    function frxDecompressStream(Source, Dest: TStream): String;    
    
    или    
    
    procedure frxDeflateStream(Source, Dest: TStream; Compression:                                 TfrxCompressionLevel = gzDefault);  
    procedure frxInflateStream(Source, Dest: TStream);  
    
  • отредактировано 20:09
    ОК спасибо щас попробуем ....
  • отредактировано 20:09
    Если нужно сжатие отчетов, то достаточно положить компонент на форму. Сжиматься будут файлы .fp3 (из превью) и .fr3 (для этого в дизайнере надо сделать file/save as, file type = compressed report).
  • отредактировано May 2009
             frxReport1.ShowPreparedReport;
             frxReport1.ReportOptions.Compressed:=True;
             frxReport1.PreviewPages.SaveToFile('C:\My.fp3');
    

    Обязательно перед записью готового отчёта установить frxReport1.ReportOptions.Compressed:=True, сбрасывается в False, даже если перед компиляцией стоит True.
    (358.764 байта готового отчёта превратились в 21.301 байт, почти в 17 раз, КПД сжатия на лицо).
  • darweengdarweeng СССР
    отредактировано January 2013
    Доброго времени! Со сжатием вроде все получилось. На С++ код выглядит так:

    TMemoryStream *S = new TMemoryStream();
    TMemoryStream *D = new TMemoryStream();
    Memo2->Lines->SaveToStream(S);
    S->Position=0;
    frxDeflateStream(S,D,gzDefault);
    delete S;
    D->Position=0;
    Memo3->Lines->LoadFromStream(D);
    delete D;

    А вот с обратной операцией не выходит:

    TMemoryStream *S = new TMemoryStream();
    TMemoryStream *D = new TMemoryStream();
    Memo3->Lines->SaveToStream(S);
    S->Position=0;
    frxInflateStream(S,D);
    delete S;
    D->Position=0;
    Memo4->Lines->LoadFromStream(D);
    delete D;

    Выдает ошибку "Data Error". Подскажите пожалуйста, как тут быть?

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.