Игнорировать неизвестные свойства при чтении объекта из потока - PullRequest
6 голосов
/ 07 июня 2011

У нас есть приложение, которое сохраняет информацию о проекте в файле, спускаясь с TPersistent.Мы используем TSteam.ReadComponentRes для чтения из потока в объект.

Мы хотели бы иметь возможность открывать файлы проекта с неизвестными свойствами (из более новых версий или других ветвей разработки нашего приложения).В настоящее время это приводит к исключению в TReader, которое создается TStream.Мы рассмотрели создание потомка TStream, который использует потомок TReader, который обрабатывает это исключение вместо остановки чтения.Кто-нибудь может придумать более элегантный способ сделать это?

1 Ответ

8 голосов
/ 07 июня 2011

Вызовите Stream.ReadResHeader, создайте экземпляр TReader, установите его событие OnError и вызовите Reader.ReadRootComponent и освободите читателя (т. Е. Имитируйте поведение TStream.ReadComponentRes).

Внутри обработчика события OnError вы можете установить handled: = true.

...