RTTI kann nur mit Typen umgehen, die einen Namen haben, also per type declaration definiert worden sind. "On the fly" erzeugte Typen wie dein ^R gehören nicht dazu.
Hm.
Das scheint aber nur begrenz so zu sein ...
Für die Klasse
Code:
C4 = class
X: record F: string end;
end;
geht das sehr wohl, allerdings ist der Typname von X dann doch sehr kryptisch - :C4.:1
Ziemlich schräg.
Das liegt vermutlich daran, dass der record ein Feld enthält, für dessen Typ (string) der Compiler die Speicherverwaltung übernimmt.
Auch das scheint nicht der Fall zu sein.
Selbst wenn ich
Code:
C4 = class
X: record end;
end;
verwende, wird der Typname :C4.:1 ausgegeben.
Ist für mich absolut unlogisch das Ganze und sorgt bei der Verwendung für einige Klimmzüge
Soweit ich das bisher eruieren konnte gibts das Problem nur für die Variante mit einer (impliziten) Pointer Deklaration.