Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
Delphi 12 Athens
|
AW: Daten zwischen Klassen übertragen (mit RTTI?)
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
|