Einzelnen Beitrag anzeigen

Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#11

AW: Daten zwischen Klassen übertragen (mit RTTI?)

  Alt 12. Okt 2016, 15:35
Geht es hiermit?
Delphi-Quellcode:
uses System.Rtti;

...

procedure TDeineKlasse.AssignProps(Source: TObject);
var
  ctxSrc: TRttiContext;
  ctxDest: TRttiContext;
  rtSrc: TRttiType;
  rtDest: TRttiType;
  propSrc: TRttiProperty;
  propDest: TRttiProperty;
begin
  ctxSrc := TRttiContext.Create;
  try
    ctxDest := TRttiContext.Create;
    try
      rtSrc := ctxSrc.GetType(Source.ClassType);
      rtDest := ctxDest.GetType(ClassType);
      for propSrc in rtSrc.GetProperties do
        begin
          propDest := rtDest.GetProperty(propSrc.Name);
          if Assigned(propDest) and
            (propDest.PropertyType = propSrc.PropertyType) then
            if propDest.IsWritable then
              propDest.SetValue(self, propSrc.GetValue(Source));
        end;
    finally
      ctxDest.Free;
    end;
  finally
    ctxSrc.Free;
  end;
end;
Mein Originalcode sieht etwas anders aus, daher kann es sein, dass es nicht auf Anhieb funktioniert.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat