Wenn das Property keinen Getter/Setter hätte, könnte man das über ein "böses" rumpointern machen, aber VAR geht vom Prinzip her nunmal nicht, da es eben immer einen Getter und/oder Setter hinter einem Property geben könnte.
Darum gibt es auch immer Probleme, wenn man z.B. einen Record über ein Property raus gibt und da dann nur ein Feld ändern will. (inzwischen wirft Delphi da aber wenigstens eine Warnung)
Bleibt noch die
RTTI:
function TTestForm.AssignTheValue(aDescription: String; aObject1: TObject{oder TComponent, bzw. TPersistent}; aPropertyName1, aString2: String): Integer; overload;