AGB  ·  Datenschutz  ·  Impressum  







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

Verzeichniss abbilden...

Ein Thema von Teekeks · begonnen am 27. Aug 2009 · letzter Beitrag vom 30. Aug 2009
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.316 Beiträge
 
Delphi 12 Athens
 
#2

Re: Verzeichniss abbilden...

  Alt 27. Aug 2009, 16:44
Es kommt ja erstmal darauf an, was du willst.
Denn es gibt ja mehrere Wege

Wenn du eh nur eine normale TreeView hast und alle Daten immer darin enthalten sind (also nicht in OnExpand und OnCollapse füllen und leeren), dann kannst du diese Daten (ist ja nur der Name) direkt in die ListView einfügen und deinen Record weglassen ... doppelte Datenführung muß dann doch nicht sein.


Effektiv würde ich garkeine Arrays verwenden, sondern verkettete Listen.


in meinem SSF hab ich im Grunde diese Struktur zur Speicerhung verwendet
Delphi-Quellcode:
TRootDirRec = Record
  First, Last: PDirRec;
End;
PDirRec = ^TDirRec;
TDirRec = Record
  Prev, Next: PDirRec;
  Parent: PDirRec;
  Childs: TRootDirRec;

  FileName: String;
  Attributes: LongWord;
End;

Var Root: TRootDirRec;
und dann sind von Root ausgehend alle Dateien/Verzeichnisse als doppelt verkettete Liste bei ihrem Parent eingetragen.

Also die Dateien/Ordner einer Ebene sind über Prev & Next miteinander verbunden
und in First & Last stehen Anfang und Ende der Liste (wobei man Prev & Last auch weglassen könnte, wenn man nicht vor hat, diese Liste nachträglich zu ändern, (abgesehn von Einträgen anzuhängen).

Insgesammt stellt dieses also eine mehrfach kreuz und quer verkette Liste dar, durch welche man via eines Pointers (PDirRec) sehr leicht navigieren kann.

Ob es nun eine Datei oder ein Verzeichnis ist, ist dabei erstmal egal,
denn durch den gleichen Datentyp kann man so auf alles gleich zugreifen.
Und was nun was ist, wird in Attributes festgelegt (dort gibt es eines für Verzeichnisse)

Hat den Vorteil, daß sich diese Struktur sehr schön Editieren läßt (hinzufügen, ändern und löschen von Einträgen),
denn wie man sieht, fülle ich diese Liste ja nicht einfach nur, sondern kann auch wärend des Füllens damit arbeiten und z.B. schon zu diesem Zeitpunkt diese Liste anzeigen und auch schon einige Sachen damit veranstalten.



PS: TFileName ist etwas mickrig definiert, hab hier Datei-/Verzeichnisnamen, welche wesendlich länger sind.

FileName = Array[0..MAX_PATH-1] wäre da schon angebrachter
Wobei wohl meistens String[255] auch ausreichen sollte, da MAX_PATH auch nur 260 ist, aber laut Spezifikation kann halt ein Name im FAT/NTFS-Dateisystem so lang sein, also MAX_PATH-1, da dort ja die abschließende #0 mit eingerechnet ist.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
 


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