Java ist auch eine Insel

Soeben ist meine neue Amazon-Bestellung eingetroffen: Java ist auch eine Insel. Damit werde ich mich in nächster Zeit in Java einarbeiten. Das ist auch dringend nötig, da meine Projektgruppe im Rahmen der Programmieraufgabe im Masterstudiengang Software-Engineering an der Ohm-Hochschule Nürnberg sich für diese Sprache entschieden hat. Mein Team muss die Fertigungsplanung (Wegfindung und -optimierung) einer [...]

C#: Klassenübergreifendes Logging

Heute habe ich mir ein paar Gedanken zum Thema Logging mit C# gemacht. Für das umfangreiche Projekt, an dem ich zur Zeit arbeite, musste ich eine einfache und flexible Möglichkeit finden, verschiedene Meldungen (Hinweis, Erfolg, Fehler) zu loggen, ohne die zahlreichen Klassen von einer bestimmten Implementierung abhängig zu machen. Meine Lösung hierzu sieht wie folgt [...]

C#: Verwendete XML-Namespaces aus XML-Dateien auslesen

Lange habe ich gesucht und doch keine Antwort auf die (meiner Meinung nach einfache) Frage gefunden, wie man mit C# alle in einer XML-Datei verwendeten XML-Namespaces auslesen kann. Damit meine ich eine simple Liste mit Präfixen und den diesen zugeordneten Namespaces, wie sie im Wurzelelement der XML-Datei definiert werden.
Es gibt zwar den XmlNamespaceManager, aber dem [...]

AntMe!

Wer hätte gedacht, dass es soviel Spaß macht, ein kleines Ameisenvölkchen zu "programmieren"? Das lustige Code-Projekt AntMe! von Microsoft lädt jeden gewillten Teilnehmer dazu ein, mittels der frei verfügbaren Programmierumgebung Visual Studio Express in C# einen Haufen virtueller Ameisen mit künstlicher Intelligenz auszustatten.
Das ist sogar recht einfach, da sich die Programmierung (zu Beginn) lediglich auf [...]

Iteration über Enumerations in C#

In meinem C#-Programm hatte ich das Problem zu lösen, Strings in Typen eines Enums umzuwandeln. Z.B. habe ich eine Enumeration GeschlechtTyp definiert, die wie folgt aussieht:

/// <summary>

/// Mögliche Geschlechter.

/// </summary>

public enum GeschlechtTyp

{

    /// <summary>

    /// Männer.

    /// </summary>

    m,

    /// <summary>

    /// Frauen.

    /// </summary>

    w

} [...]

C#: Gleitkommapräzision und Rundung

Was für ein Titel!
Aber es ist durchaus einen Beitrag wert, sich mit der Präzision und Rundung von Gleitkommazahlen in C# auseinanderzusetzen. Gerade, wenn man (wie ich) an einem finanzmathematischen Programm schreibt, kann es sonst sehr schnell zu Problemen bzw. seltsamen Ergebnissen kommen. Da ich diese Erfahrung heute machen durfte (und ca. 50 Variablen [...]

C#-Projekt: MySqlClient unter .NET ist extrem langsam

Bei meinem C#-Projekt füge ich teilweise bis zu 30.000 Datensätze in eine MySQL-Tabelle ein und muss diese später auch wieder auslesen. Meine speziell geschriebene Datenbank-Klasse, die diese Aufgaben erledigen soll, benötigt für 2000 Datensätze fast 5 Minuten. Das kann's nicht sein, dachte ich mir, und somit machte mich auf die Suche nach einer Lösung, um [...]

C#-Projekt: Zugriff auf MySQL

Heute habe ich im Rahmen meines C#-Projektes den Zugriff auf eine MySQL-Datenbank getestet. Dazu ist letztlich nur der MySQL .NET-Connector nötig, den man auf der MySQL-Seite herunterladen kann. Nun muss man nur noch einen Verweis auf die entsprechende DLL einrichten (Mysql.Data.dll) und schon kann man die MySQL-Funktionen nutzen. Hier habe ich mal einen beispielhaften Ablauf [...]

C#-Projekt: Zugriff auf Excel-Dateien

Der Zugriff auf Excel-Dateien und -Funktionen mit C# ist eigentlich recht einfach. Zunächst muss ein Verweis auf die COM-Bibliothek Microsoft Excel 11.0 Object Library hinzugefügt und dann noch der entsprechende Namespace inkludiert werden mittels:

using Microsoft.Office.Interop.Excel;

Änderungen bei Excel 2007: Es muss die COM-Bibliothek Microsoft Excel 12.0 Object Library verwendet werden.
Dann kann man munter drauflos [...]

C#-Projekt: Konfigurationsklasse

Heute habe ich nach knapp zweitägiger Arbeit meine Konfigurationsklasse fertiggestellt, mit der ich in Zukunft die Anwendungen meines C#-Projekts konfigurieren werde. Ich hatte da ja schonmal was erstellt, aber der Zugriff auf die Einstellungen war doch mehr als umständlich und es war auch keine Verschachtelung von Einstellungsbereichen möglich.
Daher habe ich nun eine Konfigurationsklasse geschrieben, die [...]