Ich liebe meine Arbeit! Heute kam ein Paket mit einigen Geschmacksmustern und ich "musste" testen.
Meine Diät ist zum Teufel, aber was muss das muss!
Ich liebe meine Arbeit! Heute kam ein Paket mit einigen Geschmacksmustern und ich "musste" testen.
Meine Diät ist zum Teufel, aber was muss das muss!
Eine Sache habe ich bei den Express Editions des Visual Studios nie verstanden: Warum kann ich keine Interfaces anlegen? Das Interface ist eine grundlegende Technik des .Net-Frameworks. Noch unverständlicher ist es, da auf Interfaces nicht verzichtet werden muss, wenn der (Um)Weg bekannt ist. Denn umgehen können die Visual Basic Express Editions mit Interfaces, nur hinzufügen geht nicht.
Wird ein Interface gewünscht, so wählt man Neues Element hinzufügen und Textdatei. Der Suffix des Dateinamens wird auf .vb statt .txt geändert. Es wird eine leere Textdatei angelegt, in der jedoch jetzt ein Interface geschrieben werden kann:
Public Interface IGitt
End Interface
Code-Beispiel 1
Dieses Interface kann wie gewohnt bearbeitet werden:
' Interface IGitt.vb
' Wird von Klassen implementiert, die ekelige Eigenschaften haben sollen
Public Interface IGitt
ReadOnly Property Anzahl() As Integer
Property Ort() As String
Function omg() As Boolean
End Interface
Code-Beispiel 2
Es sollte trotz Express Edition keinen Grund geben, auf Interfaces zu verzichten.
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.
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 Function
Code-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.ä.)