![]() |
Mehrdimensionale Datenstruktur, aber welche?
Hallo Leute,
ich suche eine geeignete Datenstruktur, weiss aber beim besten Willen nicht, welche ich nehmen soll. Es geht um folgendes Problem. Ich will für ein späteres Suchverfahren verschiedene Pfade zu Dateien in eine Art Liste aufnehmen, weiss aber leider vorher nicht, wieviel es sein werden, sonst hätte ich ...[x..x, x..x] of String genommen. Vielleicht mal zur Verdeutlichung ein Beispiel: c:\Daten\ Aktuell\ 20060501\ XXX\ Datei -> Eintrag 1 c:\Daten\ Aktuell\ 20060502\ XXX\ Datei -> Eintrag 2 c:\Daten\ Aktuell\ 20060503\ XXX\ Datei -> Eintrag 3 c:\Daten\ Aktuell\ 20060504\ XXX\ Datei -> Eintrag 4 c:\Daten\ Aktuell\ 20060505\ XXX\ Datei -> Eintrag 5 c:\Daten\ Aktuell\ 20060701\ XXX\ Datei -> Eintrag 6 c:\Daten\ Aktuell\ 20060803\ XXX\ Datei -> Eintrag 7 c:\Daten\ Aktuell\ 20060803\ XXX\ \YYY\ Datei -> Eintrag 8 c:\Daten\ Aktuell\ 20060803\ XXX\ \YYY\ Datei -> Eintrag 9 Vorher ist leider nicht klar, wie groß bzw. wieviel Einträge es geben wird. Gibt es hierfür eine passende Datenstruktur oder muß ich über zig Umwege das Array-Feld aufbauen? |
Re: Mehrdimensionale Datenstruktur, aber welche?
Hi,
benutze Listenobjecte. Im moment ist mir zwar noch nicht ganz klar was du machen willst, aber das geht so in die Richtung Tree und Tree-Items. gruß oki |
Re: Mehrdimensionale Datenstruktur, aber welche?
Ich möchte zu einem späteren Zeitpunkt die Verzeichnis-Hirarchie durchsuchen bzw. sortieren. Deswegen will ich ja auch für eine Verzeichnisebene ein "Feld". Mir fällt sonst keine andere Lösung ein, in einem Dateisystem nach Verzeichnissen und Dateien zu suchen, und dann Dateien bzw. Verzeichniss von .. bis .. zu kopieren, als das Dateisystem zu analysieren, die Pfade in eine Datenstruktur aufzunehmen, diese aufbereiten, und dann die gewünschten Pfade wieder auszulesen. Oh Gott, Listenobjekte, klingt arg kompliziert.
|
Re: Mehrdimensionale Datenstruktur, aber welche?
Hi LokutusvB,
Zitat:
Das hört sich erst mal etwas komliziert an, ist aber reine Übungssache. Zum besseren Überblick kannst du deine Objecte ja mit schönen Eigenschaften ausschmücken. :lol: Bsp.:
Delphi-Quellcode:
Um das hier elegant zu machen fehlt mir bis jetzt noch der durchblick, was dein Kriterium für die Ordnung sein soll. Gib da mal noch ein paar Infos.
type
TPathItem = class(TObjectList) public property Path : String read FPath write FPath; end; Das Durchsuchen machen dann schon die implementierten Methoden. gruß oki |
Re: Mehrdimensionale Datenstruktur, aber welche?
Schon mal vielen Dank für die Tips,
Das Hauptkriterium der Suche ist das Datum-Verzeichnis, z.B. c:\Daten\ Aktuell\ ->20060501\<- XXX\ Datei -> Eintrag 1 Und 2. die zu kopierenden Dateien sind nicht immer im selben Unterordner -> XXX\ -> XXX\YYY\ Aber das ist nicht weiter dramatisch, im 2. Falle würde dann ein Eintrag in der Liste, wenn ich dich richtig verstehe, einfach länger werden. Gesucht werden sollen nun z.B. alle Verzeichnisse bzw. Dateien zwischen 2 Datum-Angaben, und diese kopiere ich dann. Das Kopieren klappt schon super, jedoch nur ohne Angabe von Datum von und Datum bis. Und das will ich nun auch noch realisieren. |
Re: Mehrdimensionale Datenstruktur, aber welche?
Hi,
ich glaube wir reden aneinander vorbei. Ich versuche es noch mal von vorne. 1. Was soll in die Datenstruktur eingelesen werden? Hier stellt sich die Frage, welche Dateien nach welchen Kriterien eingelesen werden sollen. Bsp.1: Lese alle Textdateien (*.txt) in der Hirarchie der Verzeichnisse ein. Das heißt, jedes Verzeichnis mit Textdatei ein Listenobject, in welchem sich weitere Listenobjecte als Verzeichnisse oder als Textdatei befinden. Bsp.2: Lese alle Textdateien (*.txt) und merke dir alle Verzeichnisse in denen die jeweilige datei steht (Mehrfachvorkommen). Das ist der erste Schritt, des geklärt werden muß. Danach geht es um die Aktionen, die ausgeführt werden sollen. gruß oki |
Re: Mehrdimensionale Datenstruktur, aber welche?
Dann nach dem ersten Prinzip.
|
Re: Mehrdimensionale Datenstruktur, aber welche?
o.k.,
tut mir leid, wenn ich es etwas umständlich mache. Nächste Frage: Müssen wir das alles einlesen, oder können wir uns auch durch die Verzeichnisse ackern und alles sofort erledigen? (Einlesen macht nur Sinn, wenn man das alles noch mal braucht!) gruß oki |
Re: Mehrdimensionale Datenstruktur, aber welche?
Ich lerne gern dazu :-)
alles sofort durchackern und kopieren geht nur, wenn kein Start- und Enddatum ausgewählt ist. Das mache ich schon. Und um ganz sicher zu gehen, falls ein Start- und Enddatum gewählt wird, das wirklich alle Dateien der bestimmten Unterordner kopiert werden, möchte ich vor dem Kopieren alle Ordner erfassen, sortieren, Auswahl treffen, Pfade der Auswahl zum Kopieren zurückgeben. Habe mich schon belehren lassen, das sowas direkt mit TSearchRec total ungenau werden kann, deswegen der Weg mit Einlesen und Auswerten. und da die Datum-Verzeichnisse mittendrinn in der Verzeichniss-Ebene sind, war anfangs für jede Verzeichnissebene ein Feld im Array angedacht. Eintrag 1: ver1 ver2 ver3 datei EIntrag 2: ver1 ver2 ver3 ver4 datei Eintrag 3: ver1 ver2 ver3 datei usw... Alles etwas umständlich, ich weiss... |
Re: Mehrdimensionale Datenstruktur, aber welche?
Zitat:
Delphi-Quellcode:
Das ist natürlich eine eigenen Funktion, in der du den Phad zerlegst und das darin befindliche Datum extrahiert. Das kannst du dann zur Prüfung nutzen und das kopieren je nach bedarf ausführen.
function GetDirctoryDate(Path : String) : TDateTime;
Wie gesagt, ich will dich nicht von den Listen abbringen, sondern nur checken, ob es nicht einfacher geht. gruß oki |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:47 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-2025 by Thomas Breitkreuz