首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

XE2 TIdCompressorZLib解压缩 gzip TStream,该如何解决

2012-12-15 
XE2 TIdCompressorZLib解压缩 gzip TStream本帖最后由 nennenpow 于 2012-06-05 16:59:57 编辑您们好,初次

XE2 TIdCompressorZLib解压缩 gzip TStream
本帖最后由 nennenpow 于 2012-06-05 16:59:57 编辑 您们好,初次在此发问

目前希望能使用TIdHTTPProxyServer读取gzip压缩的内容

我的程式如下

void __fastcall TForm3::MyProxyHTTPDocument(TIdHTTPProxyServerContext *AContext, TStream *&VStream)

{
Log("===============Receive Response===============");
Log("Type: " + AContext->Command);
Log("Target: " + AContext->Target);

if (AContext->Headers->Values["Content-Encoding"] == "gzip") {
Log("GZIP!!!!");
try{
TStringStream* OutStream = new TStringStream();
zb->DecompressStream(VStream,OutStream,0);
Log(OutStream->DataString);
OutStream->Free();
}catch(Exception *e){
Log(e->ToString());
}
}

我的环境是C++ XE2
其中zb 是一个TIdCompressorZLib物件

执行时会一直出现
ZLib Error (-6)

我上网找解答时,有些人有提到TIdCompressorZLib XE2 有问题
因此希望能确定是我的程式有错误,或是如果TIdCompressorZLib有问题的话,我应该如何解决呢? 

谢谢!
[最优解释]
试一试 TIdCompressorZLib 的 DecompressGZipStream 方法。
[其他解释]

謝謝你的回應!

我將程式

zb->DecompressStream(VStream,OutStream,0);

改成

Log("Start");
zb->DecompressGZipStream(VStream,OutStream);
Log("End");


在release模式下會停在那一行程式

在debug模式下會出現
First chance exception at $00000038. Exception class $C0000005 with message 'access violation at 0x00000038: read of address 0x00000038'. 

不知道是什麼什麼問題...

還是非常謝謝你的回答!
[其他解释]
谢谢你的回应!

我将程式

zb->DecompressStream(VStream,OutStream,0);

改成

Log("Start");
zb->DecompressGZipStream(VStream,OutStream);
Log("End");


在release模式下会停在那一行程式

在debug模式下会出现
First chance exception at $00000038. Exception class $C0000005 with message 'access violation at 0x00000038: read of address 0x00000038'.  

不知道是什么什么问题...

还是非常谢谢你的回答!
[其他解释]
看起来象是访问了一个值为NULL的对象。你确认VStream和OutStream都正确初始化,并且,VStream中包含有效的GZip压缩数据?
[其他解释]
VStream 是拜访Google 的结果,我有试着把他写到.gz file可以解压缩

OutStream就是单纯new 一个物件
TStringStream* OutStream = new TStringStream();

我有试过用TMemoryStream
但还是一样的问题

谢谢!
[其他解释]
Finally 

I use zlibex to do it 

http://www.base2ti.com/
[其他解释]
我也遇到一样的问题,xe2中的TIdCompressorZLib确实有问题,还是别偷懒去下载
[其他解释]
Update: TIdCompressorZLib works in XE3

热点排行