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 Verzeichnisstruktur vernünftig abspeichern, wie? (https://www.delphipraxis.net/26437-verzeichnisstruktur-vernuenftig-abspeichern-wie.html)

phlux 23. Jul 2004 23:03


Verzeichnisstruktur vernünftig abspeichern, wie?
 
Sers :hi:

So schauts aus, ich plane ein Programm zu schreiben das unter anderem die Datei-/Verzeichnisstruktur auslesen soll und natürlich abspeichern (in eine Datei) :roll: jetzt meine Überlegung wie ich das anstell bin aber zu keinem vernünftigen Ansatz gekommen :? Hat jemand von euch ne Idee?? Bin moment nicht sehr in ner kreativen Phase :x

mfg phluphlu :hi:

ripper8472 24. Jul 2004 05:06

Re: Verzeichnisstruktur vernünftig abspeichern, wie?
 
ich würd vielleicht sowas machen:
Code:
"C:" {
    "WINNT" {
        "System" {
        }
        "explorer.exe"
    }
    "Programme" {
        "Borland" {
        }
    }
    "IO.SYS"
}
so ein baum lässt sich mit rekursiven funktionen abspeichern. tipp für die einrückung: die gewünschte vorherige einrückung an die funktion übergeben, die ein enthaltenes verzeichnis ausgeben soll.

Gruß, Christoph

rantanplan99 24. Jul 2004 06:56

Re: Verzeichnisstruktur vernünftig abspeichern, wie?
 
Hm, ein etwas 'fauler' Ansatz: wenn du die Daten in einem TTreeView hast, dann verwende doch einfach die Funktionen die TTreeView mitbringt.

Delphi-Quellcode:
procedure LoadFromFile(const FileName: string);
procedure LoadFromStream(Stream: TStream);
procedure SaveToFile(const FileName: string);
procedure SaveToStream(Stream: TStream);

SirThornberry 24. Jul 2004 07:22

Re: Verzeichnisstruktur vernünftig abspeichern, wie?
 
Liste der Anhänge anzeigen (Anzahl: 2)
Ich hab vor einiger Zeit mal eine Komponente für sowas geschrieben. Source + Beispieproject sind im Anhang. Nach Installation des Packages befindet sich unter dem Reiter "ESFEB" dann die Komponente "TVHarddisk" + 2 weitere Komponenten die für das Beispielproject benötigt werden.

[Edit]Ich pack das Beispielproject noch mal als EXE mit dazu damit du erstmal gucken kannst ob es das ist was du ungefähr suchst[/Edit]

Achja, ne Beschreibung der Komponente noch: Das ganze ist eine Art virtuelle Festplatte. Mann kann neue Laufwerke, Ordner und dateien anlegen und das dann als Datei abspeichern. Im Prinzip eine Zipdatei nur das nix gezippt wird.

MathiasSimmack 24. Jul 2004 07:31

Re: Verzeichnisstruktur vernünftig abspeichern, wie?
 
Ähem, XML würde sich auch anbieten. :)

OregonGhost 24. Jul 2004 09:04

Re: Verzeichnisstruktur vernünftig abspeichern, wie?
 
Da würde mich gerade mal interessieren, wie man das mit XML am besten lösen würde. Eher sowas wie
Code:
<dir name="windows">
  <dir name="system">
  </dir>
</dir>
oder eher sowas wie
Code:
<windows>
  <system>
  </system>
</windows>
?

XML hat natürlich den Vorteil, dass es recht einfach erweiterbar ("extensible" (c; ) ist, aber bei großen Datenmengen auch schnell groooß wird.
Wenn man jetzt noch Dateien in den Baum bringen will, geht das in der zweiten Lösung nur über namespaces?
(also z.B. <file:kernel32.dll>)
Oder geht sowas wie <?files>...</?files> ?

[Nachtrag 1]
Ich sehe gerade, die zweite Lösung wird so nicht funktionieren, weil ein XML-Element nicht mit einer Ziffer beginnen und auch kein ! enthalten darf. Damit wird die XML-Lösung aber recht lang, oder?
Meine Festplatte beherbergt mindestens 10000 Verzeichnisse, von den Hunderttausenden Dateien mal abgesehen (die man lieber in mehrere XML-Dateien aufteilt, oder?)...
[/Nachtrag 1]

[Nachtrag 2]
Ich hab's einfach mal mit meinem ersten Vorschlag ausprobiert. Und es geht eigentlich, meine größte Partition mit knapp 5000 Verzeichnissen wird in eine XML-Datei von 170KB gepresst, natürlich ohne weitere Angaben (nur Verzeichnisnamen), und der Internet Explorer lädt die ziemlich schnell. Das würde also funktionieren.
Das einzige Problem ist, dass einige Zeichen wie z.B. & kodiert werden müssen (&amp;). Was aber, wenn der Dateiname tatsächlich ein &amp; enthält (warum auch immer)?
[/Nachtrag 2]

Chewie 24. Jul 2004 12:13

Re: Verzeichnisstruktur vernünftig abspeichern, wie?
 
Du könntest ja die XML-Datei gezippt abspeichern.

phlux 24. Jul 2004 13:57

Re: Verzeichnisstruktur vernünftig abspeichern, wie?
 
Hmm ich werd mir wohl mal SirT's Beispiele genauer angucken ;) euch allen ein großen Dank für eure Ideen :)

ripper8472 24. Jul 2004 14:17

Re: Verzeichnisstruktur vernünftig abspeichern, wie?
 
& wird zu &amp; und
&amp; wird zu &amp;amp; und
&amp;amp; wird zu &amp;amp;amp;
ich hab übrigens noch nie ein semikolon in einem dateinamen benutzen können.
die sonderzeichen mit replace funktionen zu ersetzen kann schnell ne endlosschleife geben ;-)

OregonGhost 24. Jul 2004 15:33

Re: Verzeichnisstruktur vernünftig abspeichern, wie?
 
@Chewie: Da habe ich auch schon dran gedacht - ändert aber nichts, wenn man jede Menge Informationen über die Dateien abspeichert, da kann man schnell viele MB bekommen, die ja auch erstmal wieder aus der ZIP-Datei extrahiert werden müssen. Und große XML-Dateien machen es einem DOM-Parser sowieso schwierig... Naja, egal, dafür gibt's ja auch andere Parser.

@ripper: Ich hab's mir schon so ähnlich gedacht, wie bei mnemonischen Zeichen. Man kann übrigens sehr wohl ein ; im Dateinamen einsetzen, das wird sogar häufig gemacht, wenn man Webseiten zum Offline-Browsen herunterlädt, denn so werden mitunter Parameter übergeben.
Gib im Explorer beim Umbenennen mal einen / oder so ein, dann zeigt er dir alle Zeichen an, die man nicht verwenden darf. Das sind nicht viele ;c)
Überhaupt ist das mit den Zeichen überall liberaler geworden, in C# darf man sogar deutsche Umlaute und das ß verwenden...
Das Schlimme ist, man darf in Dateinamen auch abgefahrene Zeichen wie #255 oder #254 verwenden, dann bekommt der Explorer ganz schnell Probleme, die zu öffnen, und auch mit anderen APIs gibt das mitunter Probleme.
Zitat:

die sonderzeichen mit replace funktionen zu ersetzen kann schnell ne endlosschleife geben
Eigentlich nicht 8)


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:38 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