Игнорировать неизвестные свойства при чтении объекта из потока

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

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

1 ответ

Решение

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

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

Другие вопросы по тегам