![]() |
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:
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.
CStream := TZCompressionStream.Create(m);
CStream.OnProgress := ZipOnProgress; CStream.CopyFrom(InpStream, InpStream.Size); CStream.Free; m.SaveToStream(OutStream); |
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