Oft ist es nötig für kleinere Applikationen Einstellungen zu implementieren. Doch vor allem für Konsolen-Anwendungen ist es oft schwierig eine Einstellungs-Seite zu integrieren. Abhilfe schafft hier die Verwendung von “ini”-Dateien, welche die jeweiligen Einstellungen als Text enthalten. Folgend zeigen wir ein Beispiel, wie du einfach eine “ini”-Datei einbinden kannst.
Einstellungen
Wir beginnen mit einer globalen Variabel, welche später unsere Einstellungen beinhalten soll.
private static Dictionary<string, Dictionary<string, string>> Ini = new Dictionary<string, Dictionary<string, string>>();
Ini-Datei einlesen
Anschließend erstellen wir eine Funktion, welche die “ini”-Datei einliest. Dies kann wie folgt aussehen.
private static bool readIniFile() { try { if (File.Exists(Path.Combine("Resources", "setup.ini"))) { using (var fs = new FileStream(Path.Combine("Resources", "setup.ini"), FileMode.Open, FileAccess.Read)) { using (var sr = new StreamReader(fs)) { var setupFile = sr.ReadToEnd(); List<string> lines = setupFile.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries).ToList(); string property = string.Empty; foreach (string line in lines) { Regex reg = new Regex(@"(?<=\[).+?(?=\])"); if (reg.IsMatch(line) && line.TrimStart().StartsWith("[") && line.TrimEnd().EndsWith("]")) { property = reg.Match(line).Value.ToString(); Ini.Add(property, new Dictionary<string, string>()); } else if(line.TrimStart().StartsWith("#") || line.TrimStart().StartsWith(";")) { // Ignore comments continue; } else { string[] elements = line.Split('='); if (elements.Count() != 2) continue; Ini[property].Add(elements[0].Trim(), elements[1].Trim()); } } } } return true; } else return false; } catch(Exception exc) { return false; } }