Einzelnen Beitrag anzeigen

Elrond

Registriert seit: 29. Sep 2014
71 Beiträge
 
#12

AW: Auf private Variable zugreifen

  Alt 18. Nov 2014, 08:19
Ich weiß nicht inwiefern das jetzt passt.
Aber ich musste auch mal auf ein privat Feld zugreifen und zwar wollte ich damals von TField den TFieldType zur Laufzeit ändern ohne es in jeden Formular anzupassen. Das ganze habe ich über die RTTI realisiert, dass klappt soweit ich weiß nur bei private Feldern die nicht strict private sind.

Delphi-Quellcode:
procedure ChangeProperty(Sender: TObject);
  var
    Context : TRttiContext;
    RttiField : TRttiField;
    RttiValue : TValue;
  begin
    RttiField := Context.GetType(TField).GetField('FDataType');
    RttiValue := TValue.FromOrdinal(TypeInfo(TFieldType), 24); //24 ftWideString

    RttiField.SetValue(Sender, RttiValue);
  end;
  Mit Zitat antworten Zitat