TRTTIEnvironment をオーバーライドし、関数 FindUnknownName() を実装しています。ExposeInstanceToUnit() によってプログラムに既に公開されている Symbol を返したいと思います。私のスクリプトの中には、グローバル オブジェクトのプロパティがスクリプト内にありますが、オブジェクトが含まれていないものがあります。例えば。グローバル オブジェクト "User" にはプロパティ UserName があります。「UserName」は「User.UserName」ではなくスクリプトにあります。
FindUnknownName のコードは
sym := compiler.CurrentProg.Table.FindSymbol("User", cvMagic);
result := TPropertySymbol(TClassSymbol(sym.Typ).Members.FindSymbol(name, cvMagic)).ReadSym;
ここでの問題は、プロパティのクラス Symbol を返すことです。これはクラス プロパティではないため、AV になります。
User のインスタンスのプロパティ シンボルを取得するためのヘルプは大歓迎です。