Игнорировать неизвестные свойства при чтении объекта из потока
У нас есть приложение, которое сохраняет информацию о проекте в файле, спускаясь с TPersistent. Мы используем TSteam.ReadComponentRes для чтения из потока в объект.
Мы хотели бы иметь возможность открывать файлы проекта с неизвестными свойствами (из более новых версий или других ветвей разработки нашего приложения). В настоящее время это приводит к исключению в TReader, которое создается TStream. Мы рассмотрели создание потомка TStream, который использует потомок TReader, который обрабатывает это исключение вместо остановки чтения. Кто-нибудь может придумать более элегантный способ сделать это?
1 ответ
Вызовите Stream.ReadResHeader, создайте экземпляр TReader, установите его событие OnError и вызовите Reader.ReadRootComponent и освободите читателя (т. Е. Имитируйте поведение TStream.ReadComponentRes).
Внутри обработчика события OnError вы можете установить handled:= true.