{"id":54211,"date":"2020-03-23T06:15:44","date_gmt":"2020-03-23T05:15:44","guid":{"rendered":"https:\/\/ar3dp.de\/docs\/programmieren\/csharp\/ini-datei-in-c-projekt-einlesen\/"},"modified":"2020-03-23T06:15:44","modified_gmt":"2020-03-23T05:15:44","slug":"ini-datei-in-c-projekt-einlesen","status":"publish","type":"docs","link":"https:\/\/ar3dp.de\/en\/docs\/programmieren\/csharp\/ini-datei-in-c-projekt-einlesen\/","title":{"rendered":"Ini-Datei in C#-Projekt einlesen"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Oft ist es n\u00f6tig f\u00fcr kleinere Applikationen Einstellungen zu implementieren. Doch vor allem f\u00fcr Konsolen-Anwendungen ist es oft schwierig eine Einstellungs-Seite zu integrieren. Abhilfe schafft hier die Verwendung von &#8220;ini&#8221;-Dateien, welche die jeweiligen Einstellungen als Text enthalten. Folgend zeigen wir ein Beispiel, wie du einfach eine &#8220;ini&#8221;-Datei einbinden kannst.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Einstellungen <\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Wir beginnen mit einer globalen Variabel, welche sp\u00e4ter unsere Einstellungen beinhalten soll.<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;clike&quot;,&quot;mime&quot;:&quot;text\/x-csharp&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;TrpContentRestriction&quot;:{&quot;restriction_type&quot;:&quot;exclude&quot;,&quot;selected_languages&quot;:[],&quot;panel_open&quot;:true},&quot;language&quot;:&quot;C#&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;csharp&quot;}\">private static Dictionary&lt;string, Dictionary&lt;string, string&gt;&gt; Ini = new Dictionary&lt;string, Dictionary&lt;string, string&gt;&gt;();<\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Ini-Datei einlesen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Anschlie\u00dfend erstellen wir eine Funktion, welche die &#8220;ini&#8221;-Datei einliest. Dies kann wie folgt aussehen.<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;clike&quot;,&quot;mime&quot;:&quot;text\/x-csharp&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;TrpContentRestriction&quot;:{&quot;restriction_type&quot;:&quot;exclude&quot;,&quot;selected_languages&quot;:[],&quot;panel_open&quot;:true},&quot;language&quot;:&quot;C#&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;csharp&quot;}\">private static bool readIniFile()\n        {\n            try\n            {\n                if (File.Exists(Path.Combine(&quot;Resources&quot;, &quot;setup.ini&quot;)))\n                {\n                    using (var fs = new FileStream(Path.Combine(&quot;Resources&quot;, &quot;setup.ini&quot;), FileMode.Open, FileAccess.Read))\n                    {\n                        using (var sr = new StreamReader(fs))\n                        {\n                            var setupFile = sr.ReadToEnd();\n                            List&lt;string&gt; lines = setupFile.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries).ToList();\n                            string property = string.Empty;\n                            foreach (string line in lines)\n                            {\n                                Regex reg = new Regex(@&quot;(?&lt;=\\[).+?(?=\\])&quot;);\n                                if (reg.IsMatch(line) &amp;&amp; line.TrimStart().StartsWith(&quot;[&quot;) &amp;&amp; line.TrimEnd().EndsWith(&quot;]&quot;))\n                                {\n                                    property = reg.Match(line).Value.ToString();\n                                    Ini.Add(property, new Dictionary&lt;string, string&gt;());\n                                }\n                                else if(line.TrimStart().StartsWith(&quot;#&quot;) || line.TrimStart().StartsWith(&quot;;&quot;))\n                                {\n                                    \/\/ Ignore comments\n                                    continue;\n                                }\n                                else\n                                {\n                                    string[] elements = line.Split('=');\n                                    if (elements.Count() != 2) continue;\n                                    Ini[property].Add(elements[0].Trim(), elements[1].Trim());\n                                }\n                            }\n                        }\n                     }\n                    return true;\n                }\n                else\n                    return false;\n            }\n            catch(Exception exc)\n            {\n                return false;\n            }\n        }<\/pre><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Oft ist es n\u00f6tig f\u00fcr kleinere Applikationen Einstellungen zu implementieren. Doch vor allem f\u00fcr Konsolen-Anwendungen ist es oft schwierig eine Einstellungs-Seite zu integrieren. Abhilfe schafft hier die Verwendung von &#8220;ini&#8221;-Dateien, welche die jeweiligen Einstellungen als Text enthalten. Folgend zeigen wir ein Beispiel, wie du einfach eine &#8220;ini&#8221;-Datei einbinden kannst. Einstellungen Wir beginnen mit einer globalen&#8230;<\/p>","protected":false},"author":1,"featured_media":0,"parent":54210,"menu_order":1,"comment_status":"open","ping_status":"closed","template":"","meta":{"_featured":false,"_is_vendor_doc":"0","footnotes":""},"doc_tag":[],"class_list":["post-54211","docs","type-docs","status-publish","hentry"],"comment_count":0,"_links":{"self":[{"href":"https:\/\/ar3dp.de\/en\/wp-json\/wp\/v2\/docs\/54211","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ar3dp.de\/en\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/ar3dp.de\/en\/wp-json\/wp\/v2\/types\/docs"}],"author":[{"embeddable":true,"href":"https:\/\/ar3dp.de\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ar3dp.de\/en\/wp-json\/wp\/v2\/comments?post=54211"}],"version-history":[{"count":0,"href":"https:\/\/ar3dp.de\/en\/wp-json\/wp\/v2\/docs\/54211\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/ar3dp.de\/en\/wp-json\/wp\/v2\/docs\/54210"}],"next":[{"title":"ViewModelBase-Beispiel","link":"https:\/\/ar3dp.de\/en\/docs\/programmieren\/csharp\/viewmodelbase-beispiel\/","href":"https:\/\/ar3dp.de\/en\/wp-json\/wp\/v2\/docs\/57035"}],"prev":[{"title":"Programmieren unter C#","link":"https:\/\/ar3dp.de\/en\/docs\/programmieren\/csharp\/programmieren-unter-c\/","href":"https:\/\/ar3dp.de\/en\/wp-json\/wp\/v2\/docs\/57072"}],"wp:attachment":[{"href":"https:\/\/ar3dp.de\/en\/wp-json\/wp\/v2\/media?parent=54211"}],"wp:term":[{"taxonomy":"doc_tag","embeddable":true,"href":"https:\/\/ar3dp.de\/en\/wp-json\/wp\/v2\/doc_tag?post=54211"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}