Visual Basic - Technik, FAQ, Tricks, Beispiele

Home / System / Datei / DiskFree

Freier Speicher auf Laufwerk

Einführung

Vor umfangreichen Kopier-Aktionen sollte man immer erst prüfen, ob der freie Speicherplatz auf dem Medium überhaupt ausreicht. Mit der unten gezeigten DiskFree-Funktion wird genau dies ermöglicht.

Beispiel

Das folgende Beispiel prüft, ob z.B. der Inhalt einer Diskette (1,44 MB) auf dem Laufwerk "D:" Platz findet:

Const MB As Long = 1024& * 1024

Sub Test()
  If DiskFree("D") < 1.44 * MB Then
    MsgBox "Passt nicht!"
  Else
    'Kopier-Aktion...
  End If
End Sub

Code

Der folgende Code-Abschnitt ist im Deklarationsteil eines Moduls oder Formulars einzufügen:

Declare Function GetDiskFreeSpaceExA Lib "kernel32" ( _
    ByVal lpDirectoryName As String, _
    lpFreeBytesAvailable As Currency, _
    lpNumberOfBytes As Currency, _
    lpNumberOfFreeBytes As Currency _
  ) As Long

Der Aufruf dieser API-Funktion wird derart gekapselt, dass auch einfache Buchstaben als Laufwerks-Bezeichner benutzt werden können:

Function DiskFree(ByVal Drive As String) As Currency
  'Laufwerks-Buchstabe passend formatieren:
  Drive = Left$(Drive, 1) & ":"

  'API-Funktion aufrufen:
  GetDiskFreeSpaceExA Drive, DiskFree, 0, 0

  'Currency/Large Integer-Korrektur:
  DiskFree = DiskFree * 10000
End Function

Man beachte, wie der Datentyp Currency verwendet wird, um einen Large Integer darzustellen. (Beide Datentypen benötigen 8 Bytes Speicher.) Da ein Currency-Wert immer 4 Nachkomma-Stellen besitzt, ist allerdings eine Multiplikation mit dem Faktor 10.000 nötig.

© Jost Schwider, 12.05.2001-12.05.2001 - http://vb-tec.de/diskfree.htm