Итак, я разрабатываю графическую библиотеку, предоставляющую пользовательский формат изображения SVG, который можно использовать в TPicture или любом компоненте VCL, поддерживающем графическое изображение, например, TImage. Я написал и поддерживал свой пакет библиотеки, начиная с версии компилятора XE7, и мой код обратно совместим до версии XE2.
Чтобы объявить свой собственный графический формат в среде IDE, я вызываю следующий код из раздела initialization
моего графического класса.
Vcl.Graphics.TPicture.RegisterFileFormat('svg', 'Scalable Vector Graphics', TWSVGGraphic);
Однако, похоже, это больше не работает с последней версии RAD Studio 10.3.3 Rio. Я уже сталкивался с подобной проблемой в прошлом, для которой я мог найти решение: Delphi - Как правильно зарегистрировать графический класс начиная с XE8?
Итак, видимо, Embarcadero изменила правила, начиная с версии 10.3.3 Rio. Снова. Мой графический класс больше не регистрируется правильно, начиная с этой версии. Иногда это так, иногда это не так. Например, когда я открываю свою IDE в первый раз, это не так. Когда я пытаюсь отладить свой пакет во время разработки, это так. Когда я пытаюсь запустить проект, иногда получается, иногда нет.
Кто-нибудь сталкивался с подобной проблемой? Изменились ли правила для раздела initialization
в самых последних версиях компилятора? Наконец, что, черт возьми, не так с моим кодом?
Или, может быть, я до сих пор не понимаю, как правильно зарегистрировать графический класс в Delphi, даже спустя столько лет. В этом случае я был бы очень признателен, если бы кто-нибудь объяснил мне, как правильно зарегистрировать графический класс, чтобы никогда больше не сталкиваться с такой проблемой в будущем.
TPicture.RegisterFileFormat('XYZ', 'Not a format', TImprovedJPEG)
, чтобы обойти ошибку в TJpegImage. - person Alister   schedule 04.03.2021