Мне нужно исправить сторонний компонент. Класс этого компонента имеет частную переменную, которая активно используется его потомками:
TThirdPartyComponentBase = class
private
FSomeVar: Integer;
public
...
end;
TThirdPartyComponent = class (TThirdPartyComponentBase)
protected
procedure Foo; virtual;
end;
procedure TThirdPartyComponent.Foo;
begin
FSomeVar := 1; // ACCESSING PRIVATE FIELD!
end;
Это работает, потому что оба класса находятся в одном модуле, поэтому они своего рода «друзья».
Но если я попытаюсь создать новый класс в новом модуле
TMyFixedComponent = class (TThirdPartyComponent)
procedure Foo; override;
end;
Я больше не могу получить доступ к FSomeVar, но мне нужно использовать его для исправления. И я действительно не хочу воспроизводить в своем коде все это дерево базовых классов.
Не могли бы вы посоветовать какой-нибудь быстрый способ получить доступ к этому частному полю без изменения единицы измерения исходного компонента , если это вообще возможно?