gpt4 book ai didi

delphi - 销毁 TReader 时出现异常

转载 作者:行者123 更新时间:2023-12-03 18:29:48 26 4
gpt4 key购买 nike

下面的代码会抛出一个 EZDecompressionError 消息 'Invalid ZStream operation' 每当行

Reader.Free

被执行。有人可以告诉我这段代码有什么问题吗?

Reader := nil;
Decompressor := nil;
InputFile := TFileStream (FileName, fmOpenRead);
try
Decompressor := TDecompressionStream.Create (InputFile);
Reader := TReader.Create (Decompressor, 1024);
SomeString := Reader.ReadString;
finally
Reader.Free
Decompressor.Free;
InputFile.Free;
end;

我测试过更改内存释放命令的顺序,但这似乎没有帮助。遗漏 Reader.Free 行当然会导致内存泄漏。

最佳答案

粉碎机

TReader 在其析构函数中执行 FStream.Seek(FBufPos - FBufCount, soCurrent)

由于向后查找而引发错误。如果在释放读取器之前调用 Reader.FlushBufferReader.Position := soFromBeginning,错误会消失吗?


来自 TDecompressionsstream 的评论。 TDecompressionStream 是只读的和单向的;你可以在流中向前寻找,但不能向后寻找。

问候,
利文

关于delphi - 销毁 TReader 时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/585280/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com