From 469477210e87ce9e64ce3643bb4e3007e2aa256e Mon Sep 17 00:00:00 2001 From: BlubbFish Date: Fri, 22 Dec 2017 22:05:00 +0000 Subject: [PATCH] [NF] v1.0.6 Add a function to overwrite a complete ini file --- InIReader.cs | 41 ++++++++++++++++++++++++++++++++++++- Properties/AssemblyInfo.cs | 6 +++--- Utils.csproj | 5 +++-- bin/Release/Utils.dll | Bin 24576 -> 25088 bytes 4 files changed, 46 insertions(+), 6 deletions(-) diff --git a/InIReader.cs b/InIReader.cs index 1db1879..f2d6fb1 100644 --- a/InIReader.cs +++ b/InIReader.cs @@ -23,6 +23,11 @@ namespace BlubbFish.Utils LoadFile(); } + /// + /// Gibt eine InIReader-Instanz zu einer Datei zurück + /// + /// Dateiname + /// public static InIReader GetInstance(String filename) { if (!instances.Keys.Contains(filename)) { @@ -72,6 +77,11 @@ namespace BlubbFish.Utils } } + /// + /// Gibt eine Liste an Sektionen zurück + /// + /// Default = true; false, wenn die Liste ohne Klammern sein soll. + /// public List GetSections(Boolean withBrackets = true) { if(withBrackets) { @@ -85,6 +95,24 @@ namespace BlubbFish.Utils } } + /// + /// Überschreibt eine InI-Datei mit der Kompletten neuen Configuration + /// + /// Neue Konfiguration + public void SetSections(Dictionary> config) { + this.inifile.Clear(); + foreach (KeyValuePair> item in config) { + String key = item.Key; + if(!key.StartsWith("[")) { + key = "[" + key + "]"; + } + if (Regex.Match(key, @"^\[[a-zA-ZäöüÄÖÜ0-9\-_ ]+\]\w*$", RegexOptions.IgnoreCase).Success) { + this.inifile.Add(key, item.Value); + } + } + this.Changed(); + } + public Dictionary GetSection(String section) { if(this.inifile.Keys.Contains(section)) { return this.inifile[section]; @@ -95,6 +123,12 @@ namespace BlubbFish.Utils return new Dictionary(); } + /// + /// Gibt einen einzelnen Wert zurück + /// + /// Name der Sektion + /// Name des Wertes + /// public String GetValue(String section, String key) { if (!section.StartsWith("[")) { @@ -108,7 +142,12 @@ namespace BlubbFish.Utils return null; } - + /// + /// Setzt einen Wert in einer Sektion + /// + /// Name der Sektion + /// Name des Wertes + /// Wert public void SetValue(String section, String key, String value) { if (!section.StartsWith("[")) { diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs index eae4588..557591c 100644 --- a/Properties/AssemblyInfo.cs +++ b/Properties/AssemblyInfo.cs @@ -10,7 +10,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("Utils")] -[assembly: AssemblyCopyright("Copyright © 2014 - 25.09.2017")] +[assembly: AssemblyCopyright("Copyright © 2014 - 22.12.2017")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern // übernehmen, indem Sie "*" eingeben: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.5.2")] -[assembly: AssemblyFileVersion("1.0.5.2")] +[assembly: AssemblyVersion("1.0.6.0")] +[assembly: AssemblyFileVersion("1.0.6.0")] diff --git a/Utils.csproj b/Utils.csproj index cc29b82..31fe9bd 100644 --- a/Utils.csproj +++ b/Utils.csproj @@ -1,5 +1,5 @@  - + Debug @@ -9,8 +9,9 @@ Properties BlubbFish.Utils Utils - v4.5 + v4.7.1 512 + true diff --git a/bin/Release/Utils.dll b/bin/Release/Utils.dll index 01bbe2048d74d76965a07137199ce1a46fe3a2a9..c3d0a9c7addd576c1085fad1eee3f67d5d8121aa 100644 GIT binary patch delta 9887 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