Category Archives: Programmierung

Kurze Codeschnipsel die das Leben leichter machen.

Rollback auf ältere Revision mit Tortoise

Möchte man Änderungen ab einer bestimmten Revision (Beispiel rev100) verwerfen und dabei die komplette History erhalten, so kann man dies mit Hilfe eines Merges durchführen. Hierzu ein kleines Beispiel, wie man z.B. den aktuellen Stand(Head) auf den Stand von rev100 bringt.

Dazu im ausgecheckten Repository einen Rechtsklick ausführen und Merge wählen, nun im Feld FROM HEAD auswählen im Feld TO die Revision 100 angeben. Nach einem Merge muss nun ein Commit erfolgen, die Revisionsnummer wird um +1 gegenüber der bisherigen (Head) Rev Nummer erhöht und der Stand zum Zeitpunkt rev100 wiederhergestellt.

ArrayList serialisieren – eigene Typen

Um zum Beispiel Einstellungen etc. zu sichern ist es oftmals sehr hilfreich den Zustand von Objekten zu sichern. Will man eine ArrayList serialisieren kann man dazu Beispielsweise einen XMLSerializer verwenden. Befinden sich in der ArrayList Objekte von eigens definierten Klassen, so ist es nötig dem Compiler mitzuteilen um welche Typen es sich handelt, ansonsten erhält man zur Laufzeit die Meldung:

Der Typ xyz wurde nicht erwartet. Verwenden Sie das XMLInclude- oder das Soapinclude-Attribut, um Typen anzugeben, die nicht statisch sind.

Beispielcode:

Type[] extraTypes = new Type[1];
extraTypes[0] = typeof(MyType);

Read More …

Starten von Anwendungen durch Internetexplorer schlägt fehl – fehlende Datei

Diese Woche stieß ich auf ein Problem in Verbindung mit dem IE6 und dem automatischen Start einer Anwendung. Folgendes Szenario war dabei gegeben:

Eine Desktop Anwendung ist für einen bestimmten Dateityp registriert z.B. *.xxx. Über ein Webinterface (PHP) kann man eine Zusammenstellung von Dateien erzeugen, durch Klick auf einen Download Button wird eine Datei (xyz.xxx) erzeugt und an den Browser gesendet. Sobald der Internetexplorer diese Datei entgegennimmt, startet er die Desktop Anwendung. Dabei übergibt er der Anwendung  den Dateinamen der heruntergeladenen Datei (im Temp Ordner des IE)  in Form eines Parameters.

Read More …

.NET 1.1 DataGrid – Checkboxen einer Spalte ausblenden

Die DataGrid Komponente des .NET 1.1 Frameworks erlaubt es einem Entwickler einzelne Spalten mit Checkboxen (DataGridBoolColumn) zu versehen, dies kann z.B. im Designer unter TableStyles -> GridColumnStyles festgelegt werden. Leider musste ich diese Woche feststellen, dass es nicht möglich die Chekboxen einzeln, also pro Zeile auszublenden. Es lässt sich lediglich die ganze Spalte dynamisch aus und einblenden.

C# und Netzwerkshare Zugriff – Samba (Linux)

C# bietet nach meinem Wissen keine Möglichkeit sich gegenüber einem Sambaserver, der nicht Mitglied einer NT Domaine ist, zu authentifizieren um anschließend Fileoperationen im Kontext eines bestimmten Users durchzuführen. Abhilfe schafft hier das vorherige Mounten des Shares mit Hilfe des Windowsexplorers. Mit Hilfe eines Tricks geht es auch ohne explizites Mounten (Einbinden) des Netzwerkshares. Dazu wird via System.Diagnostics.Process das Kommandozeilentool:

net use <share_name> <passwort> /user:<user_name>

gestartet. Anschließend kann ein Zugriff auf die Ressource Biespielweise mit:

DirectoryInfo inf = new DirectoryInfo(@“\\server\share“);

erfolgen