Ich hab mal eine kleine PHP-Funktion für VB umgeschrieben. Mit ihr kann man einfach Dateigrößen (wie sie z.B. IO.FileInfo.Length zurückgibt) in eine je nach Größe angepasste Einheit umwandeln.
Unterstützt sind zurzeit Bytes, Kilobytes, Megabytes und Gigabytes.
Bitte klicken
Ein Aufruf könnte z.B. sein:
Unterstützt sind zurzeit Bytes, Kilobytes, Megabytes und Gigabytes.
VB.NET-Quellcode
- ''' <summary>
- ''' Formatiert Dateigrößen von Bytes in Bytes/Kilobytes/Megabytes/Gigabytes. Rückgabe ist eine Liste (formatierte Zahl, der Typ, in den formatiert wurde).
- ''' </summary>
- ''' <param name="size">Die zu formatierende Dateigröße</param>
- ''' <param name="longType">Gibt an, ob der zurückgegebene Typ der formatierten Zahl in langer Schreibweise zurückgegeben wird. (True = "Byte", False = "B")</param>
- ''' <param name="round">Gibt an, ob die formatierte Größe anschließend noch gerundet wird. (True = z.B. "1234.56", False = z.B. "1234.567890...")</param>
- ''' <param name="roundDecimals">Auf diese Dezimalstelle soll gerundet werden (wird nur beachtet, wenn der Parameter "round" auf True gesetzt ist)</param>
- ''' <returns></returns>
- ''' <remarks></remarks>
- Function FormatSize(ByVal size As Integer, Optional ByVal longType As Boolean = False, Optional ByVal round As Boolean = True, Optional ByVal roundDecimals As Integer = 2) As FSReturn
- Dim newSize As Integer = 0
- Dim newType As String = ""
- If (size < 1024) Then
- newSize = size
- If longType Then
- newType = "Byte"
- Else
- newType = "B"
- End If
- ElseIf (size < 1024000) Then
- 'return round($size/1024,2)." KB";
- newSize = CInt(size / 1024)
- If longType Then
- newType = "Kilobyte"
- Else
- newType = "KB"
- End If
- ElseIf (size < 1048576000) Then
- ' return round($size/1048576,2)." MB";
- newSize = CInt(size / 1048576)
- If longType Then
- newType = "Megabyte"
- Else
- newType = "MB"
- End If
- ElseIf (size < 1073741824000) Then
- newSize = CInt(size / 1073741824)
- If longType Then
- newType = "Gigabyte"
- Else
- newType = "GB"
- End If
- Else
- newSize = size
- If longType Then
- newType = "Byte"
- Else
- newType = "B"
- End If
- End If
- If round Then
- newSize = CInt(Math.Round(newSize, roundDecimals))
- End If
- Return New FSReturn(newSize, newType)
- End Function
- Structure FSReturn
- Public Size As Integer
- Public Type As String
- Sub New(ByVal s As Integer, ByVal t As String)
- Size = s
- Type = t
- End Sub
- End Structure
Ein Aufruf könnte z.B. sein: