Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Record ist nicht vollständig definiert (https://www.delphipraxis.net/77840-record-ist-nicht-vollstaendig-definiert.html)

SirThornberry 25. Sep 2006 21:59

Re: Record ist nicht vollständig definiert
 
zum Beispiel so:
Delphi-Quellcode:
type
  TDPTreeItems = class(TObject)
  private
    fChilds : TList;
    fNodeName: String;
    function GetItem(AIndex: Integer): TDPTreeItems;
  public
    constructor Create();
    destructor Destroy(); override;

    function Add(): Integer;
    function Count(): Integer;
    procedure Clear();
    procedure Delete(AIndex: Integer);

    property Childs[AIndex: Integer]: TDPTreeItems read GetItem;
    property NodeName: String read fNodeName write fNodeName;
  end;
[...]

function TDPTreeItems.Add: Integer;
var
  lItem : TDPTreeItems;
begin
  lItem := TDPTreeItems.Create();
  result := fChilds.Add(lItem);
end;

procedure TDPTreeItems.Clear;
var
  lCount : Integer;
begin
  for lCount := Count - 1 downto 0 do
    TObject(Childs[lCount]).Free;
  fChilds.Clear;
end;

function TDPTreeItems.Count: Integer;
begin
  result := fChilds.Count;
end;

constructor TDPTreeItems.Create;
begin
  inherited Create;
  fChilds := TList.Create;
end;

procedure TDPTreeItems.Delete(AIndex: Integer);
begin
  Childs[AIndex].Free;
  fChilds.Delete(AIndex);
end;

destructor TDPTreeItems.Destroy;
begin
  Clear();
  fChilds.Free;
  inherited Destroy;
end;

function TDPTreeItems.GetItem(AIndex: Integer): TDPTreeItems;
begin
  result := TDPTreeItems(fChilds.Items[AIndex]);
end;
Eine Insert-Methode etc. hinzuzufügen dürfte nicht das Problem sein.
Vorteil: Wenn du zum setzen von "NodeName" eine SetMethode hinterlegst kannst du noch sicherstellen das es kein anderes Node mit gleichem Namen gibt etc.

gsh 25. Sep 2006 22:07

Re: Record ist nicht vollständig definiert
 
Danke für das Beispiel.
Ich werd dann morgen versuchen es einzubauen.

Michael Habbe 25. Sep 2006 22:12

Re: Record ist nicht vollständig definiert
 
Zitat:

Zitat von SirThornberry
zum Beispiel so:
Delphi-Quellcode:
... einiges an nützlichem Source
Eine Insert-Methode etc. hinzuzufügen dürfte nicht das Problem sein.
Vorteil: Wenn du zum setzen von "NodeName" eine SetMethode hinterlegst kannst du noch sicherstellen das es kein anderes Node mit gleichem Namen gibt etc.

Wäre das nicht auch was für die CodeLibrary?!?

SirThornberry 25. Sep 2006 22:13

Re: Record ist nicht vollständig definiert
 
ist eigentlich grundwissen der objectorientierten Programmierung.

Dax 25. Sep 2006 22:14

Re: Record ist nicht vollständig definiert
 
Imho nein. Dort steht schon die dpCollection, und, naja, wie man mit Listen arbeitet, Bäume usw sollte schon etwas sein, was jeder ohne nachzuschlagen beherrscht. Zumindest sehe ich das so ;)

Michael Habbe 25. Sep 2006 22:59

Re: Record ist nicht vollständig definiert
 
Zitat:

Zitat von SirThornberry
ist eigentlich grundwissen der objectorientierten Programmierung.

Demnach dürfte wohl einiges aus dem Raster fallen.....


Zitat:

Zitat von Dax
Imho nein. Dort steht schon die dpCollection, und, naja, wie man mit Listen arbeitet, Bäume usw sollte schon etwas sein, was jeder ohne nachzuschlagen beherrscht. Zumindest sehe ich das so ;)

Hm, meiner einer beherrscht schon viel, ohne es nachzuschlagen. Und wenn ich es schon einmal gebraucht habe, kann ichs natürlich in meinen Quellen nachschlagen.

Mag schon sein, dass man die dpCollection hierfür nutzen kann, nur stehen in der CodeLibrary nicht auch Dinge drin, um den Anfänger/Fortgeschrittenen/Profi auf den richtigen Weg zu bringen?

Geht es in der CodeLibrary nicht auch um grundlegende Dinge?

War aber auch nur ein Vorschlag.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:10 Uhr.
Seite 2 von 2     12   

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