Last Update 2006 / 03 / 05
|
Telefonnummer aufteilenMit diesen Funktionen kann man eine Telefonnummer, die im Format Landeskennzahl(Vorwahl)Rufnummer (Beispiel: +49(069)555666) gespeichert ist, in ihre Bestandteile zu zerlegen. Die folgenden Funktionen benötigen jeweils die komplette Telefonnummer als String und geben dann den jeweiligen Bestandteil zurück.
Function Rufnummer(Telefonnummer As String)
Rufnummer = Trim$(Right$(Telefonnummer, _
Len(Telefonnummer) - InStr(1, Telefonnummer, ")")))
End Function
Function Vorwahl(Telefonnummer As String)
Vorwahl = Trim$(Mid$(Telefonnummer, _
InStr(1, Telefonnummer, "(") + 1, _
InStr(1, Telefonnummer, ")") _
- InStr(1, Telefonnummer, "(") - 1))
End Function
Function Landeskennzahl(Telefonnummer As String)
Landeskennzahl = Trim$(Left$(Telefonnummer, _
InStr(1, Telefonnummer, "(") - 1))
End Function
Zurück zur Übersicht Zahlen FilternUm effektiv nach Telefonnummern suchen zu können, ist es oft sinnvoll alle Zeichen mit Ausnahme der Zahlen aus aus der Telefonnummer herauszufiltern. Genau das mach die folgende Funktion unter Zuhilfenahme der ASCII-Codes für die Ziffern 0 bis 9.
Function numbersOnly(strInput As String) As String
Dim x As Integer
Dim strNumber As String
For x = 1 To Len(strInput)
If (Asc(Mid(strInput, x, 1)) > 47 And Asc(Mid(strInput, x, 1)) < 57) Then
strNumber = strNumber & Mid(strInput, x, 1)
End If
Next
numbersOnly = strNumber
End Function
Zurück zur Übersicht Verzeichnisgröße ermittelnDurch rekursives Aufrufen der Dir()-Funktion und dem Addieren der mit FileLen() bestimmten Dateigröße aller enthaltenen Dateien ist es relativ einfach möglich mit den Bordmitteln von VB die Dateigröße eines kompleten Verzeichnisbaumes zu ermitteln. Hierbei entstehen allerdings eine Differenz zu dem durch das Verzeichnis tatsächlich belegten Speicherplatzes, da nur die Länge aller Dateien in Bytes summiert wird, aber nicht berücksichtigt wird, dass Blocks die nur teilweise belegt sind, als Speicherplatz vollständig verloren gehen. Besonders Verzeichnisse mit vielen Dateien auf Partitionen mit großen Blocks erzeugen in diesem Kontext deutliche Differenzen. Der folgende Code, den man sinvollerweise komplett in ein Modul kopiert, ist ein Beispiel für die Ermittlung der Verzeichnisgröße. Der Aufruf erfolgt über verz_pr("C:\der\VerzeichnisName") und liefert die Summe der Größe aller enthaltenen Dateien in KB.
Option Explicit
' *********************************************
' Prozedur aufrufen mittels ? Verz_pr("d:\daten")
' *********************************************
Dim Verz(1 To 1000) As String
Dim ebene As Integer
Function VZG(Wurzel As String) As Boolean
Dim sum As Long
Dim Dname As String
Dname = Dir(Wurzel, vbDirectory)
Do While Dname <> ""
If (Dname <> ".") And (Dname <> "..") And _
((GetAttr(Wurzel & Dname) And _
vbDirectory) = vbDirectory) _
Then
ebene = ebene + 1
Verz(ebene) = Wurzel & Dname & "\"
End If
Dname = Dir
Loop
VZG = True
End Function
Function verz_pr(w As String) As Long
Dim i As Integer
Dim d As Boolean
Dim sum As Long
i = 1
ebene = 1
If Right(w, 1) <> "\" Then w = w & "\"
Verz(1) = w
Do Until Verz(i) = ""
d = VZG(Verz(i))
sum = sum + Filelaenge(Verz(i))
Verz(i) = ""
i = i + 1
Loop
verz_pr = sum / 1024
End Function
Function Filelaenge(Wurzel As String) As Long
Dim sum As Long
Dim DName As String
DName = Dir(Wurzel)
Do While DName <> ""
If (DName = ".") Or (DName = "..") Or _
((GetAttr(Wurzel & DName) And _
vbDirectory) = vbDirectory) Then
Else
sum = sum + FileLen(Wurzel & DName)
End If
DName = Dir
Loop
Filelaenge = sum
End Function
Herzlichen Dank an Thomas Röske, der freundlicherweise die hier präsentierten Prozeduren für die Ermittlung der Verzeichnisgröße zur Verfügung gestellt hat. Zurück zur Übersicht © 1999 - 2005 by Philipp Stiefel |