Thema: Delphi Collections speichern

Einzelnen Beitrag anzeigen

Robert_G
(Gast)

n/a Beiträge
 
#10

Re: Collections speichern

  Alt 22. Jan 2005, 18:46
Sorry, dass es später wurde...
Du hast dir anscheinend die Infos zur dpCollection nicht richtig durchgelesen!
Schließlich basiert sie auf dem Delphi Streaming System, welches seine Infos per RTTI bezieht.
Die RTTI kann aber nur auf published proerties zugreifen.
Außerdem könntest du deine TXcopyProfiles direkt von der typisierten Collection ableiten.
Das erscheint mir persönlich logischer.
Delphi-Quellcode:
 {Eigenschaften}
   published
      property ExecTime: TDateTime read FExecTime write FExecTime;
      property ProfileName: string read FProfileName write FProfileName;
      property XcopyConfig: TXCConfig read FXcopyConfig write FXcopyConfig;
   end;

   _COLLECTION_ITEM_ = TXcopyProfile;
{$DEFINE TYPED_DP_COLLECTION_TEMPLATE}
{$INCLUDE dpCollection_tmpl.pas}

 {Sammlung aller Profile}
   TXcopyProfiles = class(_COLLECTION_)
   private
      FFileName: string;

   public
      constructor Create; overload;
      destructor Destroy; override;

 {Laden/Speichern}
      procedure LoadFromFile(const Filename : TFilename); override;
      procedure SaveToFile(const Filename : TFilename); override;
      procedure LoadProfiles;
      procedure SaveProfiles;
   published
 {Eigenschaften}
      property FileName: string read FFileName write FFileName;
   end;
Wenn du LoadFromFile überschreibst, kannst dort die Prüfung nach der Datei platzieren.
Damit du LoadFromFile & SaveToFile überschreiben kannst, musst du sie in der TJsCollection als virtual deklarieren.

Durch das überschreiben steht in der Datei auch TXcopyProfiles anstatt _COLLECTION_.
Code:
object XcopyProfiles: TXcopyProfiles
  FileName = 'Miep.txt'
  items = <
    item
      ExecTime = 38374.774360532410000000
      ProfileName = 'Test Profil'
      XcopyConfig.SomeProperty = 'Hallo'
    end>
end
  Mit Zitat antworten Zitat