Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Progressstatus mit Delphi Fast Zlib v.1.1.2 (https://www.delphipraxis.net/4693-progressstatus-mit-delphi-fast-zlib-v-1-1-2-a.html)

OrallY 8. Mai 2003 20:05


Progressstatus mit Delphi Fast Zlib v.1.1.2
 
Ich würde gerne mit einer Progressbar den Status angeben, während eine große Datei mit der Delphi Fast Zlib v.1.1.2 Unit De-/Komprimiert wird. Dazu habe ich mal folgendes probiert:
Code:
    CStream := TZCompressionStream.Create(m);
    CStream.OnProgress := ZipOnProgress;
    CStream.CopyFrom(InpStream, InpStream.Size);
    CStream.Free;
    m.SaveToStream(OutStream);
Doch leider wird dann ZipOnProgress nich ein einziges mal aufgerufen. Wer kann mir helfen? Ist ein bisschen doof, den User ne Minute ohne Statusmeldung rumhocken zu lassen.

OrallY 11. Mai 2003 17:39

Problem gelöst. Es befand sich ein Bug im Quelltext der Unit:
Delphi-Quellcode:
function TZCompressionStream.Write(const buffer; count: Longint): Longint;
begin
  FZStream.next_in := @buffer;
  FZStream.avail_in := count;

  if FStream.Position <> FStreamPos then FStream.Position := FStreamPos;

  while FZStream.avail_in > 0 do
  begin
    ZCompressCheck(deflate(FZStream, Z_NO_FLUSH));

    if FZStream.avail_out = 0 then
    begin
      FStream.WriteBuffer(FBuffer, SizeOf(FBuffer));

      FZStream.next_out := FBuffer;
      FZStream.avail_out := SizeOf(FBuffer);

      FStreamPos := FStream.Position;
      {DoProgress <- hier stands vorher}
    end;
    DoProgress; // hier stehts jetzt

  end;

  result := Count;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz