Ir ao conteúdo

Compacatar usando Zlib


Visitante: maugustomoreno

Posts recomendados

Visitante: maugustomoreno
 
Postado

Olá pessoal, estou tentando compactar com o zlib do delphi, a compactacao em consigo mas noa consigo mostrar o andamento da compactação em um ProgressBar, o progressbar so funciona apos ter acabado de compactar, alguém tem alguma resposta simples para isso pois sou novato em programacao. Grato Marcos Augusto

esse é o codigo que compacata mas não funciona o progressbar

unit Unit4;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Zlib, ComCtrls, StdCtrls;

type

TForm4 = class(TForm)

ProgressBar1: TProgressBar;

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

procedure CompactaArquivo(CaminhoIn, CaminhoOut, NomeFile : String);

{ Private declarations }

public

{ Public declarations }

end;

var

Form4: TForm4;

implementation

{$R *.dfm}

procedure TForm4.Button1Click(Sender: TObject);

begin

CompactaArquivo('c:\z.z', 'c:\', 'z.y');

end;

procedure TForm4.CompactaArquivo(CaminhoIn, CaminhoOut, NomeFile : String);

var

FileIni, FileOut : TFileStream; //TMemoryStream

Zip : TCompressionStream;

cont : Integer;

begin

if FileExists(CaminhoIn) then

begin

Screen.Cursor := crHourGlass;

if NomeFile <> '' then NomeFile := CaminhoOut + NomeFile;

if NomeFile = '' then NomeFile := CaminhoOut + '\DefArq.cmf';

FileIni := TFileStream.Create(CaminhoIn, fmOpenRead and fmShareExclusive);

FileOut := TFileStream.Create(NomeFile, fmCreate or fmShareExclusive);

Zip := TCompressionStream.Create(clMax, FileOut);

ProgressBar1.Max := FileIni.Size;

Zip.CopyFrom(FileIni, FileIni.Size);

ProgressBar1.Position := FileIni.Position;

Zip.Free;

FileOut.Free;

FileIni.Free;

Screen.Cursor := crDefault;

end

else

begin

Application.MessageBox('Arquivo não encontrado.','Erro',MB_ICONERROR);

end;

end;

end.

Postado

Para fazer isso, coloque o código que atualiza a barra de progresso no evento "OnProgress" do componente.

Do jeito que você fez, a barra de progresso só é atualizada depois que a chamada que compacta (CopyFrom) termina.

JP

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...