Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0239: Freier Speicherplatz bei Laufwerken mit mehr als 2 GB

 von 

Beschreibung 

Um etwas über die Festplattengröße bei Laufwerken größer 2GB zu erfahren, muß sich der GetDiskFreeSpaceEx bedient werden. Gleichzeitig kann der dem angemeldeten User zugeteile frei Plattenplatz ausgelsen werden

Schwierigkeitsgrad:

Schwierigkeitsgrad 1

Verwendete API-Aufrufe:

GetDiskFreeSpaceExA (GetDiskFreeSpaceEx)

Download:

Download des Beispielprojektes [2,29 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Projekt1.vbp -------------
'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Festplattenauswahlliste "Drive1"
' Steuerelement: Beschriftungsfeld "Label3"
' Steuerelement: Beschriftungsfeld "Label2"
' Steuerelement: Beschriftungsfeld "Label1"
' Steuerelement: Beschriftungsfeld "Label6"
' Steuerelement: Beschriftungsfeld "Label5"
' Steuerelement: Beschriftungsfeld "Label4"

Option Explicit

Private Declare Function GetDiskFreeSpaceEx Lib "kernel32" _
        Alias "GetDiskFreeSpaceExA" (ByVal lpPathname As _
        String, ByVal UserFree As Any, ByVal TotalSize As _
        Any, ByVal TotalFree As Any) As Long

Private Sub Form_Load()
  Call Drive1_Change
End Sub

Private Function GetFreeDiskSpace(ByVal LW) As Double
  Dim UsrFree As String * 8
  Dim TotSize As String * 8
  Dim TotFree As String * 8
  Dim x As Double

    Call GetDiskFreeSpaceEx(LW, UsrFree, TotSize, TotFree)
    Label1.Caption = Format$(CvStr(UsrFree), "##,###,###,###")
    Label2.Caption = Format$(CvStr(TotFree), "##,###,###,###")
    Label3.Caption = Format$(CvStr(TotSize), "##,###,###,###")
    
End Function

Function CvStr(s) As Double
  Dim i%, x As Double, p As Double
  
   p = 1
   For i = 1 To Len(s)
     x = x + Asc(Mid(s, i, 1)) * p
     p = p * 256
   Next i
   CvStr = x
End Function

Private Sub Drive1_Change()
  Dim LW$
    LW = Left$(Drive1.Drive, 2)
    Call GetFreeDiskSpace(LW)
End Sub
'---------- Ende Formular "Form1" alias Form1.frm  ----------
'-------------- Ende Projektdatei Projekt1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 5 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von Torsten am 19.01.2006 um 13:14

Hi,..bei funktioniert auch alles.

Allerdings habe ich ein Problem:
Hab "TotFree" erweitert, um eine GB-Anzeige zu bekommen. Allerdings habe ich eine ellenlange Fließkommastelle.
Bei mir sind ca 6,7 GB auf der Platte frei, angezeigt bekomm ich 6,7232478947....
Wie reduzier ich die Kommastelle auf 2?

LG Torsten

Kommentar von jens am 05.09.2004 um 13:15

Wer hier schreibt das der Tipp nicht funktionier sollte nochmal bei den Basic-Grundlagen anfangen oder es ganz mit dem proggen lassen...
Einfacher gehts doch fast net mehr...

Big Thnx für den Quelltext!
Funktioniert alles bestens :)


wegen der Größe hab ich mir ne eigene funktion geschrieben (kenne den Tip 0447 net)

kann man bestimmt nauch noch eleganter lösen...

Public Function size(groesse As String) As String
Dim x As Double
Dim bez As String
If groesse = "" Then
size = 0
Exit Function
Else
x = CDbl(groesse)
x = x / 1024
x = x / 1024
If x >= 1024 Then
bez = "GB"
x = x / 1024
Else
bez = "MB"
End If

x = Mid(x, 1, 5)
End If
size = x & " " & bez
End Function

Kommentar von Johannes Pfeiffer am 27.12.2002 um 13:43

Der Tipp funktioniert! Der Wert wird aber nicht in GB angegeben sondern in einer kleineren Einheit. Schau dir Tipp 0447: Dateigrößen umrechnen(Byte, Kilobyte, Megabyte) an. Gruß,
Johannes

Kommentar von sgsdsd am 16.07.2002 um 11:04

Totaler Müll der nicht funktioniert

Kommentar von Bluff am 11.07.2002 um 10:44

Unter 2000 gehts nicht habe 20 GB Platte, der Wert, der rauskommt ist 208 milliarden irgendeinschmarrn