AGB  ·  Datenschutz  ·  Impressum  







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

XML-Struktur in Objekte verwalten

Ein Thema von Yheeky · begonnen am 23. Aug 2008 · letzter Beitrag vom 25. Aug 2008
Antwort Antwort
Seite 1 von 2  1 2      
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#1

XML-Struktur in Objekte verwalten

  Alt 23. Aug 2008, 19:25
Hi,

ich habe hier bereits Hilfe bekommen, wie ich eine XML-Struktur in einer TreeView darstellen kann.
Nun möchte ich diese Struktur gerne objektorientiert umsetzen (mit TObject und TObjectlist).
Mein Problem ist hier, dass ich wie bei der TreeView ein TreeNode habe, der unendlich viele Nodes besitzen kann und DER wiederum auch unendlich viele besitzen kann.
Wie kann ich das objektorientiert umsetzen, hat jemand eine Idee?
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#2

Re: XML-Struktur in Objekte verwalten

  Alt 23. Aug 2008, 20:56
Will noch ein kleines Beispiel nachschieben, damit meine Frage noch deutlicher ist

Ich habe ein Objekt...
Delphi-Quellcode:
type
  TOrdner = class(TObject)
    Ordnername : String;
    Expanded: Boolean;
  end;
...dennoch möchte ich, dass DIESES Objekt wiederum Objekte vom Typ TOrdner enthalten kann (Ordner können ja Unterordner enthalten und diese wiederum Unterordner usw.).
Diese ganzen Ordner, möchte ich dann in einem einzelnen Objekt (z.B. TOrdnerSammlung vom Typen TObjectList) ablegen und speichern.

So, nun hoffe ich, dass es klarer ist - denke, dass man mit meinem ersten Post nicht soviel anfangen konnte
  Mit Zitat antworten Zitat
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: XML-Struktur in Objekte verwalten

  Alt 23. Aug 2008, 21:37
Hallo Yheeky,

ich selbst habe auch so ein Problem gehabt (es ging aber
um eine Website mit deren Unterseiten) und habe letztendlich
jedem Node einfach den Pointer eines erstellten Objektes
mitgegeben.

Damit hast du die Struktur in einem Baum, aber die Inhalte
in den einzelnen Objekten.
Sobald du auf einen Node zugreifst, kannst du dann das
drangehängte Objekte auslesen.


Grüße
Jürgen
Jürgen Höfs
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#4

Re: XML-Struktur in Objekte verwalten

  Alt 23. Aug 2008, 22:50
Hallo Jürgen,

klingt gut, aber verstehe ich leider nicht
Kannst du das vielleicht einem Laien nochmal erklären
Vielleicht auch mit Code, dann ist´s vielleicht eindeutiger.

Danke!
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#5

Re: XML-Struktur in Objekte verwalten

  Alt 23. Aug 2008, 22:58
Delphi-Quellcode:
type
  TOrdner = class(TObject)
    Ordnername : String;
    Expanded: Boolean;
    Unterordner: TOrdnerSammlung;
  end;
Allerdings sollte das ganze schon ordentlich gekapselt sein (ohne Setter...)
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#6

Re: XML-Struktur in Objekte verwalten

  Alt 23. Aug 2008, 23:21
Ja, sowas in der Art dachte ich auch, allerdings sagt mit Delphi, wenn ich die beiden Klassen (TOrdner und TOrdnerSammlung) in zwei Units auslagere, dass ich "keine Zirkuläre Unit-Referenz" haben darf - und diese brauchte ich ja, weil man sonst die Objekte nicht findet
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#7

Re: XML-Struktur in Objekte verwalten

  Alt 23. Aug 2008, 23:22
Zitat von Yheeky:
...dennoch möchte ich, dass DIESES Objekt wiederum Objekte vom Typ TOrdner enthalten kann (Ordner können ja Unterordner enthalten und diese wiederum Unterordner usw.).
Dafür wäre das Design Pattern Composite das Richtige.
Die Klasse TComponent ist übrigens ein Composite.
Mit Hilfe des Property ComponentCount und dem Array-Property Components[] kann man ganze Baumstrukturen aufbauen.
Das Property Owner ist ebenfalls wichtig, damit jedes Objekt seinen Vorfahren in der Hierarchie kennt.
Du kannst dir die Sache am Anfang einfach machen und die Klasse TOrder von TComponent ableiten.
Später willst du aber vielleicht von TComponent weggehen, da diese Klasse doch etwas Overhead mit sich rumträgt.
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#8

Re: XML-Struktur in Objekte verwalten

  Alt 23. Aug 2008, 23:38
Mit TComponent möchte ich ungern arbeiten. Ich würde gerne meine eigene Klasse entwickeln, weil ich - wie du schon vermutet hast - den ganzen Overhead nicht mit drinhaben möchte.
Ist das so schwer, solch eine Klasse zu entwickeln?
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: XML-Struktur in Objekte verwalten

  Alt 24. Aug 2008, 00:00
Zitat von Yheeky:
...wenn ich die beiden Klassen ... in zwei Units auslagere, dass ich "keine Zirkuläre Unit-Referenz" haben darf ...
NodeTypeU:
Delphi-Quellcode:
unit NodeTypeU;

interface

type
  TNodeCustom = class
  end;

implementation

end.
NodeListU:
Delphi-Quellcode:
unit NodeListU;

interface

uses Classes, NodeTypeU;

type
  TNodeList = class
  private
    FNodes: TList;
  public
    constructor create;
    destructor destroy; override;
    procedure Clear;
    procedure addNode(Node:TNodeCustom);
  end;

implementation

{ TNodeList }

constructor TNodeList.create;
begin
  FNodes:=TList.Create;
end;

destructor TNodeList.destroy;
begin
  Clear;
  FNodes.free;
  inherited;
end;

procedure TNodeList.Clear;
var i:integer;
    ItemObject:TObject;
begin
  for i:=1 to FNodes.Count do begin
    ItemObject:=FNodes[i-1];
    ItemObject.free;
  end;
  FNodes.Clear;
end;

procedure TNodeList.addNode(Node: TNodeCustom);
begin
  FNodes.Add(Node);
end;

end.
NodeU:
Delphi-Quellcode:
unit NodeU;

interface

uses NodeTypeU, NodeListU;

type
  TNode = class(TNodeCustom)
  private
    FChildNodes:TNodeList;
  public
    constructor create;
    destructor destroy; override;
    procedure addChild(Node:TNode);
  end;

implementation

{ TNode }

constructor TNode.create;
begin
  FChildNodes:=TNodeList.create;
end;

destructor TNode.destroy;
begin
  FChildNodes.free;
  inherited;
end;

procedure TNode.addChild(Node: TNode);
begin
  FChildNodes.addNode(Node);
end;

end.
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#10

Re: XML-Struktur in Objekte verwalten

  Alt 24. Aug 2008, 00:24
Ich habe schon gelesen, dass man das umgehen kann, aber anhand deines Beispieles könnte ich jetzt nicht sehen, was da genau TOrdner und TOrdnerSammlung ist.
Sorry, aber das versteh ich noch nicht
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 00:27 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