![]() |
[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:
Ich verwende die zLib version 1.2.3
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; |
Re: [zlib] AV beim freigeben vom CompressionStream
*push*
|
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:
und zwar mit diesem fehler:
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; Zitat:
|
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:
Was mach ich falsch????? :wall:
function zlibAllocMem(AppData: Pointer; Items, Size: Integer): Pointer; cdecl;
begin // GetMem(Result, Items*Size); Result := AllocMem(Items * Size); end; |
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 ;) |
Re: [zlib] AV beim freigeben vom CompressionStream
Zitat:
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:
|
Re: [zlib] AV beim freigeben vom CompressionStream
*push* :duck:
|
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...
|
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 |
Re: [zlib] AV beim freigeben vom CompressionStream
*nachhack* und?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:05 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