AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Serialisieren eines Objektes unter D7

Ein Thema von Mr_G · begonnen am 13. Nov 2004 · letzter Beitrag vom 5. Dez 2004
Antwort Antwort
Seite 3 von 4     123 4      
Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#21

Re: Serialisieren eines Objektes unter D7

  Alt 14. Nov 2004, 18:18
Also es gibt die Eigenschaft aber ich kann sie irgendwie nicht verwenden. Sie wird auch in der Programmierhilfe nicht angezeigt...

Zitat:
Hallo,
wenn ich das richtig sehe möchtest Du von einem TCollectionItem aus auf eine Eigenschaft der Collection zurgreifen, die das TCollectionItem verwaltet.
Eigentlich möchte ich auf eine Eigenschaft des Objektes zugreifen welches die Collection als Eigenschaft hat.
Jan
  Mit Zitat antworten Zitat
Benutzerbild von maximov
maximov

Registriert seit: 2. Okt 2003
Ort: Hamburg
548 Beiträge
 
Delphi 2005 Professional
 
#22

Re: Serialisieren eines Objektes unter D7

  Alt 16. Nov 2004, 09:35
Moin,

da kommt unsere geliebte Collection ja mal wieder zu ehren Vielleicht könnte man diesen thread mit dem der CodeLib verbinden, denn hier sammeln sich ja schon interessante fakten.

Zum problem, wenn du aus dem item, auf eine property der collection zugreifen willst, dann musst du 'casten'. Oder entsprechende kapselungen bereitstellen. Ungefähr so:
Delphi-Quellcode:
type
  // Angenommen das ist deine CollectionKlasse
  TMyCollection = class(TmxJsCollection)
   ...
  published
    property MyProp:TFoo read etc..
  end;


  // angenommen das ist deine itemklasse
  TMyItem = class(TCollectionItem)
  private
    function GetMyCollection:TMyCollection;
  public
    property MyCollection: TMyCollection read GetMyCollection; // collection gecasted kapseln
  end;
  
function TMyItem.GetMyCollection:TMyCollection;
begin
  result := (Collection as TMyCollection);
end;

....
// jetzt kannst du aus jedem item einfach, die properties der collection abrufen, ohne jedesmal explizit zu casten:

MyCollection.MyProp := bar;
ich hoffe deine frage zielte auf soetwas ab? Davon abgesehen würde ich TmxJsCollection benutzen, da die daten somit als text gespeichert werden können, was in der entwicklung ein schnelles einsehen und modifizieren ermöglicht
mâxîmôv.

{KDT}
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#23

Re: Serialisieren eines Objektes unter D7

  Alt 16. Nov 2004, 10:14
Hallo,
wenn ich mir die Zeichnung anschaue, dann vermute ich das Mr_G soetwas meint:

Delphi-Quellcode:
TSubCollection_1_Item = class(TCollectionItem) // wird von SubCollection_1 verwaltet !!!
...

TCollection_1 =class(TmxJsCollection)
private
  FSubCollection_1 : TmxJsCollection;
  FXYZ : Integer;
public
  property SubCollection_1 : TmxJsCollection read FSubCollection_1 write FSubCollection_1;
  property XYZ: Integer read FXYZ write FXYZ;
end;
Jetzt möchte Mr_G über SubCollection_1 auf XYZ Zugreifen.
SubCollection_1.Collection. weiter kommt Mr_G z.Z. noch nicht.
Jetzt würde ich für SubCollection_1 einen Nachfahren von TmxJsCollection basteln.
Diesem Nachfahren würde ich eine Parent Eigenschaft verpassen

Delphi-Quellcode:
TSubCollection_1_Item = class(TCollectionItem) // wird von SubCollection_1 verwaltet !!!
...

TCollection_1 =class;

TmxJsCollectionParent=class(TmxJsCollection)
private
  FParent : TCollection_1;
public
  property Parent : TCollection_1 read FParent write FParent;
end;

TCollection_1 =class(TmxJsCollection)
private
  FSubCollection_1 : TmxJsCollectionParent;
  FXYZ : Integer;
public
  constructor Create(ItemClass : TCollectionItemClass);
  property SubCollection_1 : TmxJsCollectionParent read FSubCollection_1 write FSubCollection_1;
  property XYZ: Integer read FXYZ write FXYZ;
end;

...
TCollection_1.constructor.Create(ItemClass : TCollectionItemClass);
begin
  inherited Create(ItemClass);
  FSubCollection_1:=TmxJsCollectionParent(TSubCollection_1_Item);
  FSubCollection.Parent:=Self; // Hier ist es !!!!!!!!
  ...
end;
Jetzt geht folgendes: TmxJsCollectionParent(TSubCollection_1_Item.Collection).Parent.XYZ (ungetested)
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von maximov
maximov

Registriert seit: 2. Okt 2003
Ort: Hamburg
548 Beiträge
 
Delphi 2005 Professional
 
#24

Re: Serialisieren eines Objektes unter D7

  Alt 16. Nov 2004, 10:53
Ahso, ich hab dieses problem immer mit TOwnedCollection gelöst. Dazu hab ich einfach den vorfahr von TJsCollection geändert. So kann man schön auf den owner zugreifen, auch wenn es konzeptionell nicht so schön ist. Letzendlich kommt es immer drauf an, was man erreichen will...vielleicht denkt Mr_G da auch zu kompliziert (soll ja vorkommen) und es gibt eine einfache lösung?
mâxîmôv.

{KDT}
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#25

Re: Serialisieren eines Objektes unter D7

  Alt 16. Nov 2004, 19:57
Zitat von maximov:
Ahso, ich hab dieses problem immer mit TOwnedCollection gelöst....
Jetzt wo Du es schreibst fällt mir TOwnedCollection auch wieder ein
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#26

Re: Serialisieren eines Objektes unter D7

  Alt 19. Nov 2004, 15:42
Hmmm
Ersma Sorry das ich mich so lange nich gemeldet hab (Grippe )...

Nun aber wieder zum Thema:
Welche der Lösungen ist für mein beschriebenes Problem nun die beste und falls es die mit TOwnedCollection ist, wie benutze ich das

Nochmal danke der Hilfe
Jan
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#27

Re: Serialisieren eines Objektes unter D7

  Alt 19. Nov 2004, 15:45
Zitat von Mr_G:
Nun aber wieder zum Thema:
Welche der Lösungen ist für mein beschriebenes Problem nun die beste und falls es die mit TOwnedCollection ist, wie benutze ich das
Siehe maximov's Post. Dort schreibt er, Du nur den Vorfahr von TJsCollection austauschen musst. Das ist die Lösung!!!
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von maximov
maximov

Registriert seit: 2. Okt 2003
Ort: Hamburg
548 Beiträge
 
Delphi 2005 Professional
 
#28

Re: Serialisieren eines Objektes unter D7

  Alt 2. Dez 2004, 00:12
Zitat von Jens Schumann:
Zitat von Mr_G:
Nun aber wieder zum Thema:
Welche der Lösungen ist für mein beschriebenes Problem nun die beste und falls es die mit TOwnedCollection ist, wie benutze ich das
Siehe maximov's Post. Dort schreibt er, Du nur den Vorfahr von TJsCollection austauschen musst. Das ist die Lösung!!!
Genau. Du musst dann vermutlich noch den Constructor auf den neuen vorfahren anpassen. Sprich, den Owner-parameter hinzufügen, geanu wie in TOwnedCollection und inheriten
mâxîmôv.

{KDT}
  Mit Zitat antworten Zitat
Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#29

Re: Serialisieren eines Objektes unter D7

  Alt 4. Dez 2004, 12:05
Da ich mich aus zeitmangel erst jetzt wieder mit dem Thema beschäftigt habe, habe ich nun immernoch ein Problem:
Ich habe das mit der OwnedCollection gemacht, was auch so aussieht als sei es die Perfekte Lösung meines Problems.
Leider kann ich sie nicht umsetzen weil meinem Objekt mit dem Vorfahren TCollectionItem die Eigenscaft Collection fehlt.
Ich kann besagte Eigenschaft einfach nicht nutzen (wird u.A. von der Programmierhilfe auch nicht angezeigt). Daraus folgt das ich natürlich auch nicht auf den Owner meiner Collection zugreifen kann was ich ja erreichen wollte...

Was könnte ich falsch gemacht haben?
Jan
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#30

Re: Serialisieren eines Objektes unter D7

  Alt 4. Dez 2004, 14:03
Hallo,
da TCollectionItem die property Collection hat, haben alle Nachkommen diese property.
Die property Collection ist aber vom Type TCollection evt. muss Du für den
Zugriff noch auf Deinen TCollection Nachfahren casten.
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 05:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz