Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Library: Dateien / Laufwerke (https://www.delphipraxis.net/41-library-dateien-laufwerke/)
-   -   Delphi Verzeichnisgröße ermitteln (https://www.delphipraxis.net/80123-verzeichnisgroesse-ermitteln.html)

Matze 3. Nov 2006 09:22


Verzeichnisgröße ermitteln
 
Wie es möglich ist, die Größe eines Verzeichnisses (inkl. Unterordner) zu ermitteln, zeigt Steve in diesem Beitrag. Diese Funktion gibt die Verzeichnis-Größe in Bytes zurück.

Hinweis: Damit diese Funktion funktioniert, muss in der Systemsteuerung unter Verwaltung -> Dienste Scripting gestartet sein.

Delphi-Quellcode:
uses
  ComObj;

function FolderSize(FolderName: string): Int64;
var
  fldr, fso: OleVariant;
begin
  fso   := CreateOleObject('Scripting.FileSystemObject');
  fldr  := fso.GetFolder(FolderName);

  result := fldr.size;
end;
Luckie empfiehlt, diese Funktion in einen Thread auszulagern, da es bei größeren Verzeichnissen ein wenig dauern kann, bis die Größe ermittelt wurde.

Edit: Nähere Erläuterungen, die den erforderlichen Dienst betreffen, sind den folgenden Beiträgen zu entnehmen.

EWeiss 3. Nov 2006 14:23

Re: Verzeichnisgröße ermitteln
 
Einführung!
FileSystemObject (Im späteren Verlauf mit FSO abgekürzt) ist eine von Microsoft geschaffene Plattform für die Programmierung von Webseiten und/oder Scripten. FSO ist quasi als Erweiterung zu dem Microsoft eigenen JScript zu sehen und wird vor allem bei ActivServer Pages, Windows Scripting Host und anderen Applikationen bei denen Scripte benutzt werden, eingesetzt. Mit FSO ist es möglich mit Hilfe von (Web-)Scripten auf Dateien und Verzeichnisse zuzugreifen, diese zu verändern oder anzulegen - ebenfalls kann mit Laufwerken gearbeitet werden. Einen kleinen Nachteil bringt FSO jedoch mit: Allein der Microsoft Internet Explorer unterstützt die Anwendung.

Sicherheit!
Auf Grund der Möglichkeit Daten auf dem Computer zu verändern sind des öfteren Fragen zur Sicherheit aufgetaucht. Seitdem es serverseitige (server-side) Anwendungen gibt sind jedoch die Sicherheitseigenschaften des Microsoft Internet Explorers so, dass sie keinen benutzertseitigen (client-side) Einsatz von FSO unterstützen. Das System sollte somit eigentlich sicher sein - 100% Sicherheit gibt es jedoch nicht. Um ganz sicher zu gehen, dass kein fremdes Skript mit FSO Daten auf Ihrem System löschen oder schreiben kann, sollten Sie die Möglichkeit ausschalten ActiveX-Objekte zu starten und die Sicherheitsstufe des Internet Explorers auf ein Maximum erhöhen.

Ka wo das steht!
Aber ein gewisses Risiko besteht vor allem könnte von verschiedenen Virenscannern
das benutzen von scripts generell unterbunden werden.
Das gilt dann Systemweit!

Zitat:

Das Symantectool blockt mir das FileSystemObject ab und ich kann meine Module nicht laden...
Norton AntiVirus Scriptblockierung

Edit:
Deaktivieren der Komponente FileSystemObject
ASP, Windows Script Host und weitere Skriptinganwendungen verwenden die Komponente FileSystemObject (FSO), um Laufwerke, Ordner und Dateien zu erstellen, zu löschen und zu bearbeiten beziehungsweise um Informationen über diese abzurufen. Sie können die Komponente FileSystemObject deaktivieren, sollten dabei jedoch beachten, dass dadurch auch das Wörterbuchobjekt entfernt wird. Stellen Sie außerdem sicher, dass diese Komponente nicht von anderen Programmen benötigt wird.

Anforderungen

• Anmeldeinformationen: Sie müssen als ein Mitglied der Gruppe Administratoren am Webserver angemeldet sein.
• Tools: Eingabeaufforderung.
• So deaktivieren Sie die Komponente FileSystemObject

1.
Klicken Sie auf Start, auf Ausführen, geben Sie im Feld Öffnen die Zeichenfolge cmd ein, und klicken Sie anschließend auf OK.
2.
Wechseln Sie zum Verzeichnis C:\WINNT\system32.
3.
Geben Sie in der Befehlszeile die Zeichenfolge regsvr32 scrrun.dll /u ein, und drücken Sie die Eingabetaste.
Die folgende Meldung wird angezeigt:
DllUnregisterServer in scrrun.dll erfolgreich durchgeführt.
4.
Klicken Sie auf OK.
5.
Geben Sie an der Eingabeaufforderung den Befehl exit ein, um das Fenster zu schließen.

Zusätzlich also auch noch auf AntiVirus Soft hinweisen
Welche ebenfalls das Scripting unterbindet.
Dann läuft dein Code auch nicht mehr.


gruß

TwoFace 7. Jan 2007 13:15

Re: Verzeichnisgröße ermitteln
 
Servus

Der Dienst is wohl nicht serienmäßig installiert.

Laut M$ Knowledgebase:
Zitat:

You can obtain Scrrun.dll by installing one of the following packages:

Windows Script Host
Windows NT Option Pack
Microsoft Internet Information Server 3.0
Scripting 3.1 upgrade
Visual Studio 6.0
Visual Basic 6.0

[Edit]
Bei meinem Win 2k3 ist scrrun.dll im system32 ordner.
Code:
Regsvr32 SCRRUN.DLL
hat funktioniert. Muß aber neu starten
[/Edit]

Greetz
TwoFace

MrKnogge 7. Jan 2007 13:43

Re: Verzeichnisgröße ermitteln
 
Zitat:

Zitat von TwoFace
Der Dienst is wohl nicht serienmäßig installiert.

Ich habe nichts installiert und der Code funktioniert, von daher scheint er bei XP standardmäßg installiert zu sein.

Aber Danke für die Info. "Scrrun.dll" bringt mich schon weiter.


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