Einzelnen Beitrag anzeigen

toko

Registriert seit: 19. Apr 2005
40 Beiträge
 
#6

Re: Wie greife ich auf bestimmte Objekte einer Klasse zu?

  Alt 18. Mai 2005, 22:10
Hallo,

@shmia
Ich habe meine Klassen folgendermaßen aufgebaut:

Die Klasse
Delphi-Quellcode:
  TCDCollection = class
  private
    FCollectionName: string;
    FCollectionCDs: TStringList;
  end;
soll den Namen einer CD-Liste und die CD's selber repräsentieren. Hiermit wollte ich ursprünglich arbeiten. Da ich mich aber für die Arbeitsweise mit den XML-Dateien entschieden habe, habe ich das aus den Augen verloren.

Die Klasse
Delphi-Quellcode:
  TCD = class
  private
    FCDID: Integer;
    FCDTitel: string;
    FCDInterpret: string;
    FCDGenre: string;
    FCDTracks: TStringList;
    procedure SetCDTitel(CDTitel: string);
    procedure SetCDInterpret(CDInterpret: string);
    procedure SetCDGenre(CDGenre: string);
  public
    procedure Load; virtual;
    procedure Save; virtual;
    property CDTitel: string read FCDTitel write SetCDTitel;
    property CDInterpret: string read FCDInterpret write SetCDInterpret;
    property CDGenre: string read FCDGenre write SetCDGenre;
  end;
repräsentiert oben beschriebenes. Mit dem Attribut FCDTracks kann ich nicht arbeiten, da ich nicht drauf zu greifen kann, wenn ich zwischendurch eine neue CD eingetragen habe.
Ich hatte folgendes vor: Ein Objekt der Klasse TCDCollection beinhaltet Objekte der Klasse TCD. Ein Objekt der Klasse TCD beinhaltet das Attribut FCDTracks vom Typ TStringList, in der ich die einzelnen Tracks/Lieder speichere.

@marabu
ich speichere sofort die CD mit Anlegen eines neuen Knoten in die XML-Datei. Das Objekt einer TCD gebe ich sofort nach dem Schließen der Eingabemaske frei.


@All
Ich möchte eigentlich folgendes Verhalten: Bei jedem Klick auf eine andere im ersten TStrigGrid dargestellten CD, soll das zweite TStringGrid mit den Elementen der TStringList des aktuellen CD-Objekts gefüllt werden.
Auf die XML-Geschichte bin ich nur gekommen, weil ich die Daten irgendwie speichern muß. Da mir Ini-Files nicht so geläufig und bekannt waren, habe ich mich für die XML-Variante entschieden. Eine Datenbank soll ich laut Vorgabe nicht benutzen.

Wie kann ich denn die Objekte der Klasse TCD in einem Objekt der Klasse TCDCollection speichern? Dann muss das Attribut FCollectionCDs bestimmt vom Typ TObjectList sein, um hier Pointer zu speichern!? Mit Pointer kenne ich micht nicht so gut aus. Falls jemand eine einfachere Idee hat, bin ich sehr dankbar. Falls die Zeigergeschichte nur sinnvoll kann hier jeden Tipp gebrauchen.

Im Prinzip habe ich generell die Schwierigkeit wie man auf Objekte von bestimmten Klassen zugreift. Hätte ich dass nicht, könnte ich den Speichervorgang einmal durchführen, indem ich mit dem TCDCollection-Objekt den Elternknoten der XML-Datei bilde. Als Kindknoten nehme ich die TCD-Objekte, diese haben wiederum die Lieder als Kinder, also Elemente des TCD-Objekt-Attributs FCDTracks.

Danke für eure Tapferkeit Gruß
  Mit Zitat antworten Zitat