Kontakt
DSVGO
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.
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
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