Ho letto queste domande e risposteCome posso applicare una patch a un metodo privato di una classe delphi?
How to change the implementation (detour) of an externally declared function
ma non riesco a capire come figere patch di un metodo privato di una classe situato in anoher unità.
Verificare questo esempio Voglio applicare la patch alla procedura Bar
.
Unit ThidParty;
Interface
Type
TFoo =Class
private
procedure Bar;
end;
Penso che la chiave sia trovare un modo per ottenere l'indirizzo del metodo privato.
Quindi, come posso applicare un metodo privato a una classe delphi?
AFAIK questo NON è possibile in quanto i metodi/procedure privati NON fanno parte del VMT e quindi non sono disponibili tramite RTTI ecc. Potrebbe essere possibile modificare questo, ma questo avrebbe bisogno di smontare l'altra unità e quindi fare qualche puntatore aritmetica più un po 'di montaggio per arrivarci ... – Yahia
Vedi anche [Accedi a una proprietà protetta rigorosa di una classe Delphi?] (http://stackoverflow.com/a/8330615/576719). Aiutanti di classe come menzionato da David. –