AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi XML Serialisierer für beliebige DelphiObjecte auf RTTI Basis
Thema durchsuchen
Ansicht
Themen-Optionen

XML Serialisierer für beliebige DelphiObjecte auf RTTI Basis

Ein Thema von stoxx · begonnen am 15. Feb 2009 · letzter Beitrag vom 19. Mär 2009
 
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#2

Re: XML Serialisierer für beliebige DelphiObjecte auf RTTI B

  Alt 25. Feb 2009, 16:50
die Begeisterung hält sich ja erstaunlicherweise in Grenzen.
Na das werde ich mal versuchen mit einer neuen Version zu ändern

Man kann nette Dinge mit der RTTI anstellen.
Zum Beispiel alle published Properties einfach von einem Object ins andere kopieren.
(man beachte, dass kein assign notwendig ist)
P.S. es gibt eine neue Version vom Original, die modifzierte befindet sich wieder im Anhang

folgendene Definition....

type



Delphi-Quellcode:
TMyEnum = (meNotset, meEnum1, meEnum2);


TInClass = class(TPersistent)
                              
private
    FString : string;
published
  property StringValue : String read FString write FString;
end;


//==============================================================================

TMyClass = class(TPersistent)
                               
private
    FInObj : TInClass;
    FString : string;
    FNewDouble: Double;
    FEnum: TMyEnum;
    FTop: Integer;
published
  constructor create;
  destructor destroy; override;
  function Show : string;

  property EnumValue : TMyEnum read FEnum write FEnum;
  property DoubleValue : Double read FNewDouble write FNEwDouble;
  property StringValue : String read FString write FString;
  property InObject : TInClass read FInObj write FInObj;
  property Top : Integer read FTop write FTop;

end;


implementation

//==============================================================================
{ TMyClass }
//==============================================================================
constructor TMyClass.create;
begin
  inherited create;
// FInObj := TInClass.Create(self);
// FInObj.SetSubComponent(true);
  FInObj := TInClass.Create;
end;
//==============================================================================
destructor TMyClass.destroy;
begin

  FInObj.Free;
  inherited;
end;
//==============================================================================

function TMyClass.Show: string;
begin
      ShowMessage(
          'EnumValue: '       + GetEnumName(TypeInfo(TMyEnum ) , integer(Self.FEnum)) + #13#10 +
          'StringValue: '     + self.StringValue + #13#10 +
          'DoubleValue: '     + FloatToStr(self.DoubleValue) + #13#10 +
          'TopValue: '        + IntToStr(self.Top) + #13#10 +
          'InnerClass Value: '+ self.InObject.StringValue);
end;

das ist der Test ...



Delphi-Quellcode:
procedure TfrmXMLSerialisierer.btnCopyPuPropClick(Sender: TObject);
var
  myObject : TMyClass;
  myCopy : TMyClass;

begin


    MyObject := TMyClass.Create;
    myObject.Top := 10;
    myObject.Show;

    // "Top" Property von Form kopieren (ist die einzigste gemeinsame Property"
    // man beachte, es gibt nirgendwo eine Assign Procedure

    myObject.CopyPupProperiesFrom(self);

    MyObject.StringValue := DateTimeToStr(Now);
    MyObject.EnumValue := meEnum1;
    MyObject.DoubleValue := 12345.67;
    MyObject.InObject.StringValue := 'Inner Class';

    myObject.Show;

     // neues Object (Kopie)
     myCopy := TMyClass.create;
     myObject.CopyPupProperiesTo(myCopy);
     myCopy.Show;


    // speichern //
    MyObject.SaveToXML('MyClass.xml');
    MyObject.Free;

    // Laden
    MyObject := TMyClass.Create;
    MyObject.LoadFromXML('MyClass.xml');
    myObject.Show;
    MyObject.Free;
end;
Angehängte Dateien
Dateityp: pas xmlserializer_169.pas (52,6 KB, 27x aufgerufen)
Dateityp: pas ubase_xmlserializer_101.pas (19,4 KB, 27x aufgerufen)
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz