AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Progress beim komprimieren mit CompressBuf anzeigen
Thema durchsuchen
Ansicht
Themen-Optionen

Progress beim komprimieren mit CompressBuf anzeigen

Ein Thema von Zacherl · begonnen am 20. Mai 2005 · letzter Beitrag vom 13. Jul 2005
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#11

Re: Progress beim komprimieren mit CompressBuf anzeigen

  Alt 22. Mai 2005, 19:58
Ja, vielen Dank!
Zum dekomprimieren muss ich dann TDecompressionStream verwenden, oder?

Florian
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#12

Re: Progress beim komprimieren mit CompressBuf anzeigen

  Alt 22. Mai 2005, 20:27
Falls du noch eine Antwort erwartest - Ja.

marabu
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#13

Re: Progress beim komprimieren mit CompressBuf anzeigen

  Alt 23. Mai 2005, 05:51
Hallo,
ich habe mehrere Probleme mit der Funktion mit Progress. Das komprmieren an sich funktioniert, nur wird das OnProgress Ereigniss nie abgearbeitet!

Beim Dekomprimieren (aus dem Code oben selbst zusammengefriemelt) bekomme ich immer, wenn ich auf eine eigenschaft des dekompressionstreams zugreifen will den Fehler: Ungültige Stream Operation!

Meine Funktion
Delphi-Quellcode:
procedure deCompressStream(inStream, outStream: TStream);
var
  cs: deTCompressionStream;
begin
  Form1.ProgressBar2.Max := inStream.Size;
  cs := TdeCompressionStream.Create(inStream);
  outstream.CopyFrom(cs, cs.Size);
  cs.OnProgress := Form1.OnDecompressProgress;
  cs.Free;
end;
Florian
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#14

Re: Progress beim komprimieren mit CompressBuf anzeigen

  Alt 23. Mai 2005, 06:26
Abgesehen von den Tippfehlern - der Code für das OnProgress-Ereignis muss vor dem CopyFrom angegeben werden, sonst kommst du nach der Feier.

marabu
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#15

Re: Progress beim komprimieren mit CompressBuf anzeigen

  Alt 23. Mai 2005, 11:22
Oder porbier mal den TStreamProgressAdaper: http://www.luckie-online.de/Delphi/Sonstiges/
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#16

Re: Progress beim komprimieren mit CompressBuf anzeigen

  Alt 23. Mai 2005, 16:55
Stimmt!
Das OnProgress Ereigniss wird jetzt aufgerufen und die Datei komprimiert.

Aber entweder ist meine ZLib Unit fehlerhaft, oder es gibt irgend einen Trick, wie ich den TDecompressionStream verwenden muss. Auch wenn ich vorher OnDecompressProgress zuweise kommt spätestens bei
OutStream.CopyFrom(cs, cs.Size) der Fehler: "Ungültige Stream Operation".

Ich habe ein wenig runprobiert und der Fehler kommt z.B. auch wenn ich nach cs := TDecompressionStream.Create(instream) auf z.b. cs.Size zugreife!

Fals ihr denkt, dass es an der ZLib liegt, könnte einer die Hochladen?
Weil z.b. der hier angegebene Code zur String Kompression klappt bei anderen aber bei mir kommt eine Fehlermeldung.

Florian
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#17

Re: Progress beim komprimieren mit CompressBuf anzeigen

  Alt 13. Jul 2005, 16:46
Hai Florian,

wenn Du noch keine Lösung gefunden hast versuche es mal so:
Delphi-Quellcode:
procedure DeCompressStream(inStream, outStream: TStream);
var
  cs: TDeCompressionStream;
  Buf: array[0..4095] of byte;
  Count: integer;
begin
  inStream.Position := 0;
  cs := TDeCompressionStream.Create(inStream);
  cs.OnProgress := nil;
  cs.Position := 0;
  repeat
    Count := cs.Read(Buf[0], SizeOf(Buf));
    if Count > 0 then
    begin
      outStream.Write(Buf[0], Count)
    end;
  until (Count = 0);
  cs.Free;
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz