On Mon, Sep 5, 2016 at 4:43 PM, Marcos Douglas <m...@delfire.net> wrote: > On Mon, Sep 5, 2016 at 4:33 PM, Michael Van Canneyt > <mich...@freepascal.org> wrote: >> >> What is the stream content ? TGZFile or simply compressed ? If it is >> TGZFile, then the header must be skipped before uncompressing data. > > Simply compressed. > The example is using a file, but the real app uses streams in memory. > > I can't use TBase64DecodingStream either because it not implements Seek > method: > > function TBase64DecodingStream.Seek(Offset: Longint; Origin: Word): Longint; > begin > // TODO: implement Seeking in TBase64DecodingStream > raise EStreamError.Create('Invalid stream operation'); > end;
Ok, now I understand how TBase64DecodingStream works. The code below is working. === begin === var Decoder: TBase64DecodingStream; F: TFileStream; Src, Dest: TMemoryStream; begin F := TFileStream.Create('result.txt', fmOpenRead); Decoder := TBase64DecodingStream.Create(F); Src := TMemoryStream.Create; Dest := TMemoryStream.Create; try Src.CopyFrom(Decoder, Decoder.Size); if ZUncompressStream(Src, Dest) then Dest.SaveToFile('content.txt'); Finally F.Free; Src.Free; Dest.Free; Decoder.Free; end; end; === end === Regards, Marcos Dougas _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal