Unter Windows NT/2000/XP können bei Verwendung des NTFS-Dateisystems Dateien komprimiert auf der Festplatte gespeichert werden. Diese Dateien benötigen demzufolge weniger Festplatten-Platz. Wenn Sie nun wissen möchten, wieviel Speicherplatz komprimierte Dateien tatsächlich benötigen, haben Sie ein Problem. Denn sowohl die FileLen-Funktion, als auch die Size-Eigenschaft der FileSystemObject-Klasse liefert in diesem Fall immer die Original-Größe der Datei - nicht aber die tatsächliche Größe, die eine komprimierte Datei auf der Festplatte belegt. Wie so oft, können wir dem aber unter Zuhilfenahme des Windows-API oder genauer gesagt durch Einsatz der GetCompressedFileSize-Funktion Abhilfe schaffen. Die Funktion selbst erwartet als ersten Parameter den Dateinamen und gibt die komprimierte Größe der angegebenen Datei in zwei Werten zurück: Der Rückgabewert der Funktion enthält die ersten 32 Bit der Dateigröße, was für Dateien bis zu 4 GB ausreicht. Werden mehr als 4 GB Speicherplatz für die Datei benötigt, werden die nächsten 32 Bit der Dateigröße im zweiten Parameter der Funktion zurückgegeben. Option Explicit ' Benötigte API-Deklaration Private Declare Function GetCompressedFileSize Lib "kernel32" _ Alias "GetCompressedFileSizeA" ( _ ByVal lpFileName As String, _ ByRef lpFileSizeHigh As Long) As Long ' Größe einer komprimierten Datei ermitteln Private Function GetCompressedSize(ByVal sFile As String) As Double Dim nSizeHigh As Long Dim nSize As Double nSize = GetCompressedFileSize(sFile, nSizeHigh) If nSize < 0 Then nSize = 2147483648# + (2147483648# - Abs(nSize)) If nSizeHigh > 0 Then nSize = nSize + (nSizeHigh * 4294967296#) ' 2 ^32 End If GetCompressedSize = nSize End Function Dieser Tipp wurde bereits 10.197 mal aufgerufen.
Anzeige
![]() ![]() ![]() (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
vb@rchiv CD Vol.6 ![]() ![]() Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats sevZIP40 Pro DLL ![]() Zippen und Unzippen wie die Profis! Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |