Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ordnerstruktur abbilden (https://www.delphipraxis.net/97451-ordnerstruktur-abbilden.html)

cherry 10. Aug 2007 15:38


Ordnerstruktur abbilden
 
Hi Zusammen

Mein Programm soll später eine gesamte Ordnerstruktur in eine Datei speichern. Ähnlich wie CMD -> TREE
nun sollen aber alle Ordner- und Dateigrössen ebenfalls gespeichert werden.

Mit welchen mitteln kann ich das effizient und sauber lösen?

bitte um eine etwas Detailierte Antwort, da ich keinen schimmer davon habe wie ich das anstellen soll.
Bin aber um jeden Gedankenanstoss sehr froh...

Na dann..

schönes Wochenende, und bitte meine Not nicht vergessen^^

LG Raphael

angos 10. Aug 2007 16:09

Re: Ordnerstruktur abbilden
 
Hi,

Dateiegrößen ermitteln kann man hiermit (in der Delphi-Hilfe gefunden):

Delphi-Quellcode:
procedure TForm1.btnClick(Sender: TObject);
var
  iFileHandle: Integer;
  iFileLength: Integer;
begin
  iFileHandle := FileOpen('C:\test.txt', fmOpenRead);
  iFileLength := FileSeek(iFileHandle,0,2);
  ShowMessage(iFileLength);
end;
Gruß

Pfoto 10. Aug 2007 16:13

Re: Ordnerstruktur abbilden
 
hallo cherry,

spontan würde mir dazu einfallen, eine Komponente zu nehmen,
wie man sie zum packen von Dateien braucht. Dort ist es ja
fast immer möglich, ganze Verzeichnisbäume mit Dateiinfos
in einer Datei abzuspeichern.

Schau doch mal auf torry.net nach Komponenten, selbst wenn
du sie nicht benutzen willst, könntest du dir anschauen, wie
man so was effizient umsetzt und daraus lernen.


Gruß
Pfoto

angos 10. Aug 2007 16:18

Re: Ordnerstruktur abbilden
 
hab grad nochmal mehrere Wege gefunden, und zwar in unserer gut sortierten :dp:-CodeLib [cl]Dateigröße[/cl]

Gruß

shmia 10. Aug 2007 16:21

Re: Ordnerstruktur abbilden
 
Am Besten in einer XML-Datei speichern.
Das könnte so aussehen:
XML-Code:
  <?xml version="1.0" encoding="utf-8" ?>
<Snapshot>
  <dir name="\">
  <file name="autoexec.bat" size="259" timestamp="2005-03-09" />
  <dir name="Windows">
    <file name="win.ini" size="1311" timestamp="2005-03-09" />
    <file name="update.log" size="45517" timestamp="2007-03-12" />
  </dir>
  </dir>
</Snapshot>

cherry 13. Aug 2007 07:37

Re: Ordnerstruktur abbilden
 
in XML speichern finde ich eine gute Idee...
also mein Problem sind auch nicht die Dateien, sondern die Ordner...
Alles was ich jetzt noch unbedingt wissen sollte ist, wie ich eine Ordnergrösse
ermitteln kann, Dateigrössen sind kein Problem, aber eben Ordnergrössen!

Als ich es so versuchte, ergab die Grösse immer 0!

muss ich zuerst alle dateigrössen in diesem Ordner und dessen Unterordnern zusammenzählen oder wie jetzt???

Muetze1 13. Aug 2007 08:07

Re: Ordnerstruktur abbilden
 
Zitat:

Zitat von cherry
muss ich zuerst alle dateigrössen in diesem Ordner und dessen Unterordnern zusammenzählen oder wie jetzt???

Ja, genau so. Ordner an sich sind nur Verwaltungselemente und haben keinen Inhalt bzw. Grösse und von daher sind sie 0 Bytes gross. Du musst von daher den Inhalt rekursiv durchsuchen und zusammen zählen.

cherry 13. Aug 2007 08:09

Re: Ordnerstruktur abbilden
 
na super! :evil:

Danke trotzdem euch allen.. :-D

marabu 13. Aug 2007 10:16

Re: Ordnerstruktur abbilden
 
Hallo,

natürlich kann man die einzelnen Dateigrößen rekursiv ermitteln und akkumulieren. Manchmal ist es aber ganz angenehm, wenn man andere für sich arbeiten lässt:

Delphi-Quellcode:
function FolderSize(fn: TFileName): Int64;
var
  fs, fo: OleVariant;
begin
  if DirectoryExists(fn) then
  begin
    fs := {ComObj.}CreateOleObject('Scripting.FileSystemObject');
    fo := fs.GetFolder(fn);
    Result := fo.Size;
  end else Result := -1;
end;
Grüße vom marabu


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