Rubrik: Verschiedenes / Sonstiges | VB-Versionen: VB2005, VB2008 | 22.12.09 |
Skalierte Darstellung von Byte-Werten Diese Funktion wandelt Byte-Angaben in der best darstellbaren Größenangabe um und gibt diese als String zurück. | ||
Autor: Dieter Otter | Bewertung: | Views: 8.793 |
www.tools4vb.de | System: Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Mit nachfolgender Funktion lassen sich Byte-Angaben (z.B. Ordner- oder Dateigröße) sauber darstellen, wobei die Funktion selbst entscheidet, wann die Angabe in Bytes, KBytes, MBytes etc. erfolgt.
Optional kann durch Angabe des Decimals-Parameter zusätzlich die gewünschte Anzahl Nachkommastellen angegeben werden.
''' <summary> ''' Skalierte Darstellung von Bytes ''' </summary> ''' <param name="Bytes">Bytes</param> Public Function FormatBytes(ByVal Bytes As Long) As String Return FormatBytes(Bytes, 0) End Function
''' <summary> ''' Skalierte Darstellung von Bytes ''' </summary> ''' <param name="Bytes">Bytes</param> ''' <param name="Decimals">Anzahl Nachkommastellen</param> Public Function FormatBytes(ByVal Bytes As Long, ByVal Decimals As Integer) As String Dim result As String = String.Empty If Bytes < 0 Then Throw New System.ArgumentOutOfRangeException _ ("Byte-Angaben müssen positiv sein") End If If Bytes < 1024 Then ' Byte-Darstellung result = CStr(Bytes) & " Bytes" Else ' KB/MB/GB/TB-Darstellung For i As Integer = 4 To 1 Step -1 If Bytes >= 1024 ^ i Then result = Strings.FormatNumber(Bytes / 1024 ^ i, Decimals) & _ " " & CType(Choose(i, "KB", "MB", "GB", "TB"), String) Exit For End If Next End If Return result End Function
Aufrufbeispiel:
Dim Bytes As Long = My.Computer.FileSystem.GetFileInfo("d:\temp\datei").Length ' Angabe der Größe mit einer Nachkommastelle Label1.Text = FormatBytes(Bytes, 1)