Donnerstag, 30. Oktober 2008

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!

Sonntag, 5. Oktober 2008

Interfaces und die Microsoft Visual Basic 2008 Express Edition

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 InterfaceCode-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 InterfaceCode-Beispiel 2

Es sollte trotz Express Edition keinen Grund geben, auf Interfaces zu verzichten.

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.ä.)