从流中读取对象时忽略未知属性

时间:2011-06-07 13:21:02

标签: delphi properties delphi-2009 tpersistent

我们有一个应用程序,它通过TPersistent的降序将项目信息存储在一个文件中。我们使用TSteam.ReadComponentRes从流中读取对象。

我们希望能够打开具有未知属性的项目文件(来自我们应用程序的较新版本或其他开发分支)。目前,这导致TReader中的异常,该异常由TStream创建。我们考虑过制作一个TStream后代,它使用TReader后代来处理这个异常,而不是停止阅读。任何人都可以想到一种更优雅的方式吗?

1 个答案:

答案 0 :(得分:8)

调用Stream.ReadResHeader,创建一个TReader实例,设置其OnError事件并调用Reader.ReadRootComponent并释放阅读器(即模仿TStream.ReadComponentRes的行为)。

在OnError事件处理程序中,您可以设置processed:= true。