Dienstag, 30. September 2008

Anfang der Woche

Woran kann man an meinem Quellcodes erkennen, dass etwas am Anfang der Woche geschrieben wurde? An der Länge der Bezeichner. Beispiel: Private Function getListOfDefaultKeywords() As String

Am Freitag hätte ich wohl nur getKeywords geschrieben.

Montag, 22. September 2008

VB.Net: Ordner anlegen

Sie kennen das Problem? Ein Programm soll eine Datei in ein Verzeichnis schreiben, verschieben oder kopieren, doch Sie sind sich nicht sicher, ob der Ordner überhaupt existiert?

Für solche Fälle hatte ich in der Vergangenheit eine Routine, die mit Hilfe einer Rekursion nicht vorhandene Ordner anlegt; immerhin kann ja auch schon der übergeordnete Ordner fehlen.

Die alte Lösung funktionierte gut, gefiel mir nur nicht. Eine rekursive Funktion für einen solch einfachen Zweck? Bis mir aus heiterem Himmel eine bessere Lösung einfiel. Die Idee: split()

 Public Shared Sub OrdnerCheck(ByVal Ordnerpfad As String)    Dim asOrdner() As String    Dim sPfad As String = ""    asOrdner = Split(Ordnerpfad, "\" )    For Each sOrdner As String In asOrdner     sPfad &= sOrdner & "\"     If Not Directory.Exists(sPfad) Then Directory.CreateDirectory(sPfad)    Next  End Sub Code-Beispiel 1

Das Ding funktionierte auf Anhieb gut (was immer verdächtig ist); allerdings kann CreateDirectory einen Ausnahmefehler erzeugen. Daher ist es besser, diesen zu berücksichtigen.

 Public Shared Function OrdnerChecked(ByVal Ordnerpfad As String) As Boolean   Dim asOrdner() As String   Dim sPfad As String = ""   Dim bReturn As Boolean = True   asOrdner = Split(Ordnerpfad, "\")   Try    For Each sOrdner As String In asOrdner     sPfad &= sOrdner & "\"     If Not Directory.Exists(sPfad) Then _      Directory.CreateDirectory(sPfad)    Next   Catch ex As Exception    bReturn = False   End Try   Return bReturn  End FunctionCode-Beispiel 2

Jetzt kann mit einer If-Then-Else-Konstruktion die Existenz eines Ordners geprüft, gegebenenfalls der Ordner angelegt und die Datei abgelegt werden. Ist die Anlage unmöglich kann im Programm selbst auf das Problem reagiert werden (Dialog o.ä.)