AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Verzeichnisstruktur vernünftig abspeichern, wie?
Thema durchsuchen
Ansicht
Themen-Optionen

Verzeichnisstruktur vernünftig abspeichern, wie?

Ein Thema von phlux · begonnen am 23. Jul 2004 · letzter Beitrag vom 26. Jul 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#1

Verzeichnisstruktur vernünftig abspeichern, wie?

  Alt 23. Jul 2004, 23:03
Sers

So schauts aus, ich plane ein Programm zu schreiben das unter anderem die Datei-/Verzeichnisstruktur auslesen soll und natürlich abspeichern (in eine Datei) 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

mfg phluphlu
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
ripper8472

Registriert seit: 17. Aug 2003
275 Beiträge
 
#2

Re: Verzeichnisstruktur vernünftig abspeichern, wie?

  Alt 24. Jul 2004, 05:06
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
Christoph
char l[]="\xd6N\x96\xa6\xe6\xce.\xa6\xe4\xce\x04N\x86\xae\ xce\xfc",I,*i=l-1;for(;I=3,*i
++;){while(*i=*i&~(1<<I|1<<7-I)|(*i&1<<I)<<7-2*I|(*i&1<<7-I)>>7-2*I,I--);}puts(l);
  Mit Zitat antworten Zitat
rantanplan99
(Gast)

n/a Beiträge
 
#3

Re: Verzeichnisstruktur vernünftig abspeichern, wie?

  Alt 24. Jul 2004, 06:56
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);
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Verzeichnisstruktur vernünftig abspeichern, wie?

  Alt 24. Jul 2004, 07:22
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.
Angehängte Dateien
Dateityp: zip filepack.zip (76,2 KB, 59x aufgerufen)
Dateityp: zip example_107.zip (328,4 KB, 68x aufgerufen)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#5

Re: Verzeichnisstruktur vernünftig abspeichern, wie?

  Alt 24. Jul 2004, 07:31
Ähem, XML würde sich auch anbieten.
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#6

Re: Verzeichnisstruktur vernünftig abspeichern, wie?

  Alt 24. Jul 2004, 09:04
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]
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Verzeichnisstruktur vernünftig abspeichern, wie?

  Alt 24. Jul 2004, 12:13
Du könntest ja die XML-Datei gezippt abspeichern.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#8

Re: Verzeichnisstruktur vernünftig abspeichern, wie?

  Alt 24. Jul 2004, 13:57
Hmm ich werd mir wohl mal SirT's Beispiele genauer angucken euch allen ein großen Dank für eure Ideen
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
ripper8472

Registriert seit: 17. Aug 2003
275 Beiträge
 
#9

Re: Verzeichnisstruktur vernünftig abspeichern, wie?

  Alt 24. Jul 2004, 14:17
& 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
Christoph
char l[]="\xd6N\x96\xa6\xe6\xce.\xa6\xe4\xce\x04N\x86\xae\ xce\xfc",I,*i=l-1;for(;I=3,*i
++;){while(*i=*i&~(1<<I|1<<7-I)|(*i&1<<I)<<7-2*I|(*i&1<<7-I)>>7-2*I,I--);}puts(l);
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#10

Re: Verzeichnisstruktur vernünftig abspeichern, wie?

  Alt 24. Jul 2004, 15:33
@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)
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 05:24 Uhr.
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