Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Mehrdimensionale Datenstruktur, aber welche? (https://www.delphipraxis.net/77808-mehrdimensionale-datenstruktur-aber-welche.html)

LokutusvB 25. Sep 2006 09:40


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?

oki 25. Sep 2006 09:44

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

LokutusvB 25. Sep 2006 09:48

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.

oki 25. Sep 2006 09:59

Re: Mehrdimensionale Datenstruktur, aber welche?
 
Hi LokutusvB,

Zitat:

Zitat von LokutusvB
Oh Gott, Listenobjekte, klingt arg kompliziert.

ist es gar nicht. Du kannst dir ein eigenes Object erstellen, welches weitere Objecte aufnehmen kann. dein basisobject ist halt vom Typ TObjectList. Hat das Element ein element, ab in die Liste. ein weiteres element, ab in die List, dieses element ein Element, ab in diese Liste usw. ...

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:
type
  TPathItem = class(TObjectList)
  public
    property Path : String read FPath write FPath;
  end;
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.

Das Durchsuchen machen dann schon die implementierten Methoden.

gruß oki

LokutusvB 25. Sep 2006 10:07

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.

oki 25. Sep 2006 10:23

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

LokutusvB 25. Sep 2006 10:34

Re: Mehrdimensionale Datenstruktur, aber welche?
 
Dann nach dem ersten Prinzip.

oki 25. Sep 2006 10:51

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

LokutusvB 25. Sep 2006 11:30

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...

oki 25. Sep 2006 11:55

Re: Mehrdimensionale Datenstruktur, aber welche?
 
Zitat:

Zitat von LokutusvB
alles sofort durchackern und kopieren geht nur, wenn kein Start- und Enddatum ausgewählt ist. Das mache ich schon.

wenn du dich schon direkt durchackerst, dann füge doch vor dem Kopieren folgende Funktion ein:
Delphi-Quellcode:
function GetDirctoryDate(Path : String) : TDateTime;
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.

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 04:23 Uhr.
Seite 1 von 2  1 2      

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