Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi [zlib] AV beim freigeben vom CompressionStream (https://www.delphipraxis.net/103288-%5Bzlib%5D-av-beim-freigeben-vom-compressionstream.html)

gsh 13. Nov 2007 20:34


[zlib] AV beim freigeben vom CompressionStream
 
Hi Leute

Ich hab grad ein problem bei zLib. Ich verwende diesen Code um eine datei zu komprimieren:
Delphi-Quellcode:
procedure Compress(InputFileName, OutputFileName: string);
var InputStream, OutputStream: TFileStream;
  CompressionStream: ZLib.TCompressionStream;
begin
  InputStream:=TFileStream.Create(InputFileName, fmOpenRead);
  try
    OutputStream:=TFileStream.Create(OutputFileName, fmCreate);
    try
      CompressionStream:=TCompressionStream.Create(clMax, OutputStream);
      try
        CompressionStream.CopyFrom(InputStream, InputStream.Size);
      finally
        CompressionStream.Free; //<--- hier kommt die AV
      end;
    finally
      OutputStream.Free;
    end;
  finally
    InputStream.Free;
  end;
end;
Ich verwende die zLib version 1.2.3

gsh 14. Nov 2007 12:41

Re: [zlib] AV beim freigeben vom CompressionStream
 
*push*

gsh 14. Nov 2007 13:17

Re: [zlib] AV beim freigeben vom CompressionStream
 
habs mal mit einem memory stream getestet und da bleibt er schon beim .Create hängen:
Delphi-Quellcode:
  Memory := TMemoryStream.Create;
  try
    Memory.LoadFromFile(cTestDatei);
    Memory.Position := 0;
    MemoryOUT := TMemoryStream.Create;
    try
      MemoryOUT.Size := Memory.Size;
      MemoryOUT.Position := 0;
      CompressionStream := TCompressionStream.Create(clMax, MemoryOUT); //<-- hier
      try
        CompressionStream.CopyFrom(Memory, Memory.Size);
      finally
        CompressionStream.Free;
      end;
    finally
      MemoryOUT.Free;
    end;
  finally
    Memory.Free;
  end;
  Memo.Lines.EndUpdate;
end;
und zwar mit diesem fehler:
Zitat:

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt PerformanceTester.exe ist eine Exception der Klasse ECompressionError mit der Meldung 'error' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------
Ich verstehs nicht ... kann es an meinen .obj liegen? Hab meine von pngimage "geklaut" weil ich sie nirgendwo anderes gefunden hab

gsh 18. Nov 2007 10:47

Re: [zlib] AV beim freigeben vom CompressionStream
 
Weiß denn niemand rat?

Ich versteh die welt einfach nimmer ich schauf es nicht irgendwas mit zLib zusammen zu bekommen

hab grad mal versucht zu dekomprimieren und erhalte den fehler des ich nich genug arbeitsspeicher hab und zwar hier:
Delphi-Quellcode:
function zlibAllocMem(AppData: Pointer; Items, Size: Integer): Pointer; cdecl;
begin
//  GetMem(Result, Items*Size);
  Result := AllocMem(Items * Size);
end;
Was mach ich falsch????? :wall:

phreax 18. Nov 2007 12:23

Re: [zlib] AV beim freigeben vom CompressionStream
 
Da scheint wohl irgendwas mit deiner Zlib Version nicht zu stimmen, dein Code aus dem ersten und der aus dem 3. Post funktionieren einwandfrei unter Turbo Delphi mit Zlib 1.0.4.

BTW: Im 3. Post hat sich ein Fehler eingeschlichen: dadurch, dass die Größe des OutPutStreams auf die des Inputstreams gesetzt wird, werden hinten an den komprimierte Output soviele $00 angehängt, das er wieder genau so groß ist wie der Input ;)

gsh 18. Nov 2007 12:35

Re: [zlib] AV beim freigeben vom CompressionStream
 
Zitat:

Zitat von phreax
Da scheint wohl irgendwas mit deiner Zlib Version nicht zu stimmen, dein Code aus dem ersten und der aus dem 3. Post funktionieren einwandfrei unter Turbo Delphi mit Zlib 1.0.4.

hmm kann es an meinen .obj dateien liegen?
den wie oben erwähnt hab ich die von pngdelphi geklaut weil ich sie nirgends gefunden hab.
hab aber grad endeckt des pngdelphi noch die version 1.1.4 benutzt

Wo bekomm ich den die dateien in der aktuellesten version her?

Zitat:

Zitat von phreax
BTW: Im 3. Post hat sich ein Fehler eingeschlichen: dadurch, dass die Größe des OutPutStreams auf die des Inputstreams gesetzt wird, werden hinten an den komprimierte Output soviele $00 angehängt, das er wieder genau so groß ist wie der Input ;)

aja stimmt aber ich wollte mal fehlerquellen auschließen

gsh 19. Nov 2007 16:16

Re: [zlib] AV beim freigeben vom CompressionStream
 
*push* :duck:

Muetze1 19. Nov 2007 19:04

Re: [zlib] AV beim freigeben vom CompressionStream
 
Ich werde es morgen mal mit BDS2006 testen auf Arbeit, aber ich weise gleich darauf hin, dass wir dort die PNGImage einsetzen und die direkten C Quellen und nicht die Objekte. Dabei sind die C Quellen auf dem neusten Stand (1.2.3 afair) und werden direkt in eine LIB compiliert und dann entweder von Delphi per $L angezogen oder hat von C++. Ich werde es mal testen und Bescheid geben. Wenn ich es vergesse, nochmal nachhaken bitte...

gsh 19. Nov 2007 20:33

Re: [zlib] AV beim freigeben vom CompressionStream
 
ahm ja vllt kannst du mir ja die .obj schicken oder mir sagen wie man die in der neusten version erstellt

hab ja auch BDS2006

gsh 20. Nov 2007 15:59

Re: [zlib] AV beim freigeben vom CompressionStream
 
*nachhack* und?


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:05 Uhr.
Seite 1 von 2  1 2      

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