<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Der Aufbau meiner Konfigurationen ist schlecht]]></title><description><![CDATA[<p>Hallo Welt,</p>
<p>ich programmiere ein Programm, dessen Verhalten von Konfigurationsdateien gesteuert wird. Die Konfigurationen sind im XML-Format beschrieben, aber mit dem Aufbau bin ich ueberhaupt nicht zufrieden. In einer Konfiguration(sdatei) ist z.B. beschrieben, wie eine Pipeline aufzubauen ist, welche Eigenschafte die einzelnen Pipeline-Stationen erhalten und so weiter. Hier ist ein Beispiel einer Konfiguration (es gibt leider keinen XML-Tag, also HTML):</p>
<pre><code class="language-html">&lt;pipeline_modules&gt;
	&lt;module&gt; &lt;!-- das erste Modul ist immer die Datenquelle 
		(es gibt unterschiedliche) --&gt;

		&lt;!-- type weist auf die Pipeline-Station/Modul hin, 
		das gebaut werden soll --&gt;
		&lt;type&gt;FlatFileSource&lt;/type&gt;

		&lt;!-- Wenn hier ein Pfad zu einer Datei steht, wird  
		das Modul mit diesem Pfad initialisiert, wenn der 
		Knoten leer bleibt, wird der Pfad in der GUI angegeben --&gt;
		&lt;data_source&gt;&lt;/data_source&gt; 
	&lt;/module&gt;
	&lt;module&gt;
		&lt;type&gt;CSVParser&lt;/type&gt;

		&lt;!-- es koennen mehrere, unterschiedliche Trennzeichen zur 
		gleichen Zeit verwendet werden --&gt;
		&lt;delimiter&gt;
			&lt;character&gt;;&lt;/character&gt;
			&lt;hexadecimal&gt;09&lt;/hexadeciaml&gt; &lt;!-- Tab-Trennzeichen --&gt;	
		&lt;/delimiter&gt;
	&lt;/module&gt;
	&lt;module&gt;
		&lt;type&gt;TextFilter&lt;/type&gt;
		&lt;filter&gt;
			&lt;content&gt;blank&lt;/content&gt;
			&lt;content&gt;12345&lt;/content&gt;
			&lt;line&gt;1&lt;/line&gt; &lt;!-- das ist nicht immer erforderlich --&gt;
		&lt;/filter&gt;
	&lt;/module&gt;
	&lt;module&gt;
		&lt;!-- andere --&gt;
	&lt;/module&gt;
&lt;/pipeline_modules&gt;
</code></pre>
<p>Es ist irgendwie Chaotisch. Noch deutlicher wird es, wenn in einer anderen Konfiguration andere Module erforderlich sind, und die Parameter sich aendern:</p>
<pre><code class="language-html">&lt;pipeline_modules&gt;
	&lt;module&gt; &lt;!-- Datenquelle --&gt;
		&lt;type&gt;SqlServerTableSource&lt;/type&gt;
		&lt;connection_string&gt;ConnectionString&lt;/connection_string&gt;
		&lt;data_source&gt;EinTabellenName&lt;/data_source&gt; 
	&lt;/module&gt;
	...
&lt;/pipeline_modules&gt;
</code></pre>
<p>Das alles in die Konfig zu tippen ist ja leicht, aber es ist schwierig, einen sauberen Parser zu schreiben (ich meine keinen XML-Parser, sondern einen, der mithilfe eines XML-Parsers die Struktur parst). Habe da noch nicht viel Erfahrung mit Konfigurationen.</p>
<p>Momentant verwende ich eine switch- und if-Orgie, und das ist schrecklich. Das liegt eben daran, dass sich die die Knoten-Namen von Konfig zu Konfig aendern, und meist oft verschachtelt sind, wo sich auch wieder die Namen der Knoten aendern. Den kleinsten gemeinsamen Nenner kann ich fuer die Knoten-Namen nicht finden, die Konfigurationen muessen flexibel sein.</p>
<p>Kennt jemand vielleicht einen sauberen Weg und hat Erfahrung, was flexible Konfigurationen anbelangt?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/203122/der-aufbau-meiner-konfigurationen-ist-schlecht</link><generator>RSS for Node</generator><lastBuildDate>Sun, 28 Jun 2026 18:56:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/203122.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 19 Jan 2008 00:08:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Der Aufbau meiner Konfigurationen ist schlecht on Sat, 19 Jan 2008 00:10:21 GMT]]></title><description><![CDATA[<p>Hallo Welt,</p>
<p>ich programmiere ein Programm, dessen Verhalten von Konfigurationsdateien gesteuert wird. Die Konfigurationen sind im XML-Format beschrieben, aber mit dem Aufbau bin ich ueberhaupt nicht zufrieden. In einer Konfiguration(sdatei) ist z.B. beschrieben, wie eine Pipeline aufzubauen ist, welche Eigenschafte die einzelnen Pipeline-Stationen erhalten und so weiter. Hier ist ein Beispiel einer Konfiguration (es gibt leider keinen XML-Tag, also HTML):</p>
<pre><code class="language-html">&lt;pipeline_modules&gt;
	&lt;module&gt; &lt;!-- das erste Modul ist immer die Datenquelle 
		(es gibt unterschiedliche) --&gt;

		&lt;!-- type weist auf die Pipeline-Station/Modul hin, 
		das gebaut werden soll --&gt;
		&lt;type&gt;FlatFileSource&lt;/type&gt;

		&lt;!-- Wenn hier ein Pfad zu einer Datei steht, wird  
		das Modul mit diesem Pfad initialisiert, wenn der 
		Knoten leer bleibt, wird der Pfad in der GUI angegeben --&gt;
		&lt;data_source&gt;&lt;/data_source&gt; 
	&lt;/module&gt;
	&lt;module&gt;
		&lt;type&gt;CSVParser&lt;/type&gt;

		&lt;!-- es koennen mehrere, unterschiedliche Trennzeichen zur 
		gleichen Zeit verwendet werden --&gt;
		&lt;delimiter&gt;
			&lt;character&gt;;&lt;/character&gt;
			&lt;hexadecimal&gt;09&lt;/hexadeciaml&gt; &lt;!-- Tab-Trennzeichen --&gt;	
		&lt;/delimiter&gt;
	&lt;/module&gt;
	&lt;module&gt;
		&lt;type&gt;TextFilter&lt;/type&gt;
		&lt;filter&gt;
			&lt;content&gt;blank&lt;/content&gt;
			&lt;content&gt;12345&lt;/content&gt;
			&lt;line&gt;1&lt;/line&gt; &lt;!-- das ist nicht immer erforderlich --&gt;
		&lt;/filter&gt;
	&lt;/module&gt;
	&lt;module&gt;
		&lt;!-- andere --&gt;
	&lt;/module&gt;
&lt;/pipeline_modules&gt;
</code></pre>
<p>Es ist irgendwie Chaotisch. Noch deutlicher wird es, wenn in einer anderen Konfiguration andere Module erforderlich sind, und die Parameter sich aendern:</p>
<pre><code class="language-html">&lt;pipeline_modules&gt;
	&lt;module&gt; &lt;!-- Datenquelle --&gt;
		&lt;type&gt;SqlServerTableSource&lt;/type&gt;
		&lt;connection_string&gt;ConnectionString&lt;/connection_string&gt;
		&lt;data_source&gt;EinTabellenName&lt;/data_source&gt; 
	&lt;/module&gt;
	...
&lt;/pipeline_modules&gt;
</code></pre>
<p>Das alles in die Konfig zu tippen ist ja leicht, aber es ist schwierig, einen sauberen Parser zu schreiben (ich meine keinen XML-Parser, sondern einen, der mithilfe eines XML-Parsers die Struktur parst). Habe da noch nicht viel Erfahrung mit Konfigurationen.</p>
<p>Momentant verwende ich eine switch- und if-Orgie, und das ist schrecklich. Das liegt eben daran, dass sich die die Knoten-Namen von Konfig zu Konfig aendern, und meist oft verschachtelt sind, wo sich auch wieder die Namen der Knoten aendern. Den kleinsten gemeinsamen Nenner kann ich fuer die Knoten-Namen nicht finden, die Konfigurationen muessen flexibel sein.</p>
<p>Kennt jemand vielleicht einen sauberen Weg und hat Erfahrung, was flexible Konfigurationen anbelangt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1439285</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1439285</guid><dc:creator><![CDATA[endline]]></dc:creator><pubDate>Sat, 19 Jan 2008 00:10:21 GMT</pubDate></item><item><title><![CDATA[Reply to Der Aufbau meiner Konfigurationen ist schlecht on Sat, 19 Jan 2008 14:08:10 GMT]]></title><description><![CDATA[<p>Hallo endline!</p>
<p>Soooo schlecht sieht das gar nicht aus was Du da machst. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
<p>Um Baumstrukturen vernünftig abzufragen, siehe Dir doch mal das Kompositum (Composite) Pattern der GoF an<br />
<a href="http://de.wikipedia.org/wiki/Kompositum_(Entwurfsmuster)" rel="nofollow">http://de.wikipedia.org/wiki/Kompositum_(Entwurfsmuster)</a></p>
<p>Um endlose Routinen zu vermeiden, um die Baumstrukturen zu parsen, nutze den das DOM Model (Parser)<br />
<a href="http://en.wikipedia.org/wiki/Document_Object_Model" rel="nofollow">http://en.wikipedia.org/wiki/Document_Object_Model</a></p>
<p>und den Standard XPath:<br />
<a href="http://www2.informatik.hu-berlin.de/~obecker/obqo/w3c-trans/xpath-de/" rel="nofollow">http://www2.informatik.hu-berlin.de/~obecker/obqo/w3c-trans/xpath-de/</a></p>
<p>Nicht die Konfig war das Problem, sondern was Du damit machst. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>cu<br />
P84</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1439452</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1439452</guid><dc:creator><![CDATA[Prof84]]></dc:creator><pubDate>Sat, 19 Jan 2008 14:08:10 GMT</pubDate></item><item><title><![CDATA[Reply to Der Aufbau meiner Konfigurationen ist schlecht on Sat, 19 Jan 2008 22:46:41 GMT]]></title><description><![CDATA[<p>endline schrieb:</p>
<blockquote>
<p>Hallo Welt,</p>
<p>ich programmiere ein Programm, dessen Verhalten von Konfigurationsdateien gesteuert wird. Die Konfigurationen sind im XML-Format beschrieben, aber mit dem Aufbau bin ich ueberhaupt nicht zufrieden.</p>
</blockquote>
<p>Hallo endline,</p>
<p>ist XML àls Format vorgegeben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1439698</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1439698</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Sat, 19 Jan 2008 22:46:41 GMT</pubDate></item><item><title><![CDATA[Reply to Der Aufbau meiner Konfigurationen ist schlecht on Sat, 19 Jan 2008 22:55:10 GMT]]></title><description><![CDATA[<p>Prof84 schrieb:</p>
<blockquote>
<p>Um Baumstrukturen vernünftig abzufragen, siehe Dir doch mal das Kompositum (Composite) Pattern der GoF an<br />
<a href="http://de.wikipedia.org/wiki/Kompositum_(Entwurfsmuster)" rel="nofollow">http://de.wikipedia.org/wiki/Kompositum_(Entwurfsmuster)</a></p>
</blockquote>
<p>Was meinst du denn damit?</p>
<p>Prof84 schrieb:</p>
<blockquote>
<p>Um endlose Routinen zu vermeiden, um die Baumstrukturen zu parsen, nutze den das DOM Model (Parser)<br />
<a href="http://en.wikipedia.org/wiki/Document_Object_Model" rel="nofollow">http://en.wikipedia.org/wiki/Document_Object_Model</a></p>
<p>und den Standard XPath:<br />
<a href="http://www2.informatik.hu-berlin.de/~obecker/obqo/w3c-trans/xpath-de/" rel="nofollow">http://www2.informatik.hu-berlin.de/~obecker/obqo/w3c-trans/xpath-de/</a></p>
</blockquote>
<p>Was spricht hier gegen SAX? Wenn ich das richtig verstanden habe wird das Dokument einmal durchlaufen, die Pipeline aufgebaut und fertig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1439701</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1439701</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Sat, 19 Jan 2008 22:55:10 GMT</pubDate></item><item><title><![CDATA[Reply to Der Aufbau meiner Konfigurationen ist schlecht on Sun, 20 Jan 2008 00:41:55 GMT]]></title><description><![CDATA[<p>finix schrieb:</p>
<blockquote>
<p>endline schrieb:</p>
<blockquote>
<p>Hallo Welt,</p>
<p>ich programmiere ein Programm, dessen Verhalten von Konfigurationsdateien gesteuert wird. Die Konfigurationen sind im XML-Format beschrieben, aber mit dem Aufbau bin ich ueberhaupt nicht zufrieden.</p>
</blockquote>
<p>Hallo endline,</p>
<p>ist XML àls Format vorgegeben?</p>
</blockquote>
<p>Nein. Ich kann benutzen, was ich will...<br />
Ich hab XML genommen, weil es einfach zu parsen ist, mit gegebenen Libraries.</p>
<blockquote>
<p>Was spricht hier gegen SAX?</p>
</blockquote>
<p>Ich schau mir das mal an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1439734</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1439734</guid><dc:creator><![CDATA[endline]]></dc:creator><pubDate>Sun, 20 Jan 2008 00:41:55 GMT</pubDate></item><item><title><![CDATA[Reply to Der Aufbau meiner Konfigurationen ist schlecht on Sun, 20 Jan 2008 00:59:02 GMT]]></title><description><![CDATA[<p>Gibt es eine feste Anzahl von Modulen oder ist auch das flexibel? Da ein Modul und dessen Inhalt ja maßgeblich von dessen Typ bestimmt zu sein scheint, könntest du doch z.B. statt &quot;modul&quot; andere Tag-Namen verwenden? In etwa so?:</p>
<pre><code class="language-html">&lt;pipeline_modules&gt;

    &lt;FlatFileSource datasource=true&gt;  &lt;!-- &quot;datasource=true&quot; gibt an, dass es die Datenquelle ist --&gt;
        &lt;!-- Wenn hier ein Pfad zu einer Datei steht, wird  
        das Modul mit diesem Pfad initialisiert, wenn der
        Knoten leer bleibt, wird der Pfad in der GUI angegeben --&gt;
        &lt;data_source&gt;&lt;/data_source&gt;
    &lt;/FlatFileSource&gt;

    &lt;CSVParser&gt;
        &lt;delimiter character=';'/&gt;
        &lt;delimiter hexadezimal='09'/&gt;
    &lt;/CSVParser&gt;

    &lt;TextFilter&gt;
        &lt;content&gt;blank&lt;/content&gt;
        &lt;content&gt;12345&lt;/content&gt;
        &lt;line&gt;1&lt;/line&gt; &lt;!-- das ist nicht immer erforderlich --&gt;
    &lt;/TextFilter&gt;

    &lt;moduleXY&gt;
        &lt;!-- andere --&gt;
    &lt;/moduleXY&gt;

    &lt;SqlServerTableSource&gt; &lt;!-- Datenquelle --&gt;
        &lt;connection_string&gt;ConnectionString&lt;/connection_string&gt;
        &lt;data_source&gt;EinTabellenName&lt;/data_source&gt;
    &lt;/module&gt;

&lt;/pipeline_modules&gt;
</code></pre>
<p>Finde ich persönlich jedenfalls übersichtlicher, und dann halt noch genau spezifizieren, welche Inhalte drin sein müssen/dürfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1439739</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1439739</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sun, 20 Jan 2008 00:59:02 GMT</pubDate></item><item><title><![CDATA[Reply to Der Aufbau meiner Konfigurationen ist schlecht on Sun, 20 Jan 2008 13:41:25 GMT]]></title><description><![CDATA[<p>endline schrieb:</p>
<blockquote>
<p>finix schrieb:</p>
<blockquote>
<p>ist XML àls Format vorgegeben?</p>
</blockquote>
<p>Nein. Ich kann benutzen, was ich will...<br />
Ich hab XML genommen, weil es einfach zu parsen ist, mit gegebenen Libraries.</p>
</blockquote>
<p>Dann wären vielleicht <a href="http://de.wikipedia.org/wiki/YAML" rel="nofollow">YAML</a>, <a href="http://de.wikipedia.org/wiki/JSON" rel="nofollow">JSON</a> oder gar - <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> - <a href="http://en.wikipedia.org/wiki/S-expression" rel="nofollow">SEXPs</a> eine Alternative.</p>
<p>Was natürlich nicht automatisch das Problem deiner &quot;switch- und if-Orgie&quot;<sup>*</sup> löst.</p>
<p>endline schrieb:</p>
<blockquote>
<blockquote>
<p>Was spricht hier gegen SAX?</p>
</blockquote>
<p>Ich schau mir das mal an.</p>
</blockquote>
<p><a href="http://de.wikipedia.org/wiki/Simple_API_for_XML" rel="nofollow">SAX</a> ist kein Format, sondern einfach eine andere Variante XML-Dateien einzulesen.</p>
<p><sup>*</sup> Wie sieht dein Parser denn derzeit aus? Das sieht doch aus als ließe es sich perfekt modularisieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1439897</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1439897</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Sun, 20 Jan 2008 13:41:25 GMT</pubDate></item><item><title><![CDATA[Reply to Der Aufbau meiner Konfigurationen ist schlecht on Sun, 20 Jan 2008 13:51:38 GMT]]></title><description><![CDATA[<p>finix schrieb:</p>
<blockquote>
<p>Dann wären vielleicht YAML JSON SEXPs eine Alternative.</p>
</blockquote>
<p>oder das hier: <a href="http://en.wikipedia.org/wiki/Type-length-value" rel="nofollow">http://en.wikipedia.org/wiki/Type-length-value</a><br />
ist eben nur kein textformat.<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1439904</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1439904</guid><dc:creator><![CDATA[encoding-freak]]></dc:creator><pubDate>Sun, 20 Jan 2008 13:51:38 GMT</pubDate></item><item><title><![CDATA[Reply to Der Aufbau meiner Konfigurationen ist schlecht on Mon, 21 Jan 2008 17:39:57 GMT]]></title><description><![CDATA[<p>finix schrieb:</p>
<blockquote>
<p>Was meinst du denn damit?</p>
</blockquote>
<p>Wenn er ein variables Konfigurationsschema hat, muss er naturlich in seiner Applikation ein variables Parse- und Build-Model bauen. So kann man eine Ausrollung des Baumes verhindern, was dann zu unzähligen Fallunterscheidungen führen würde.</p>
<p>finix schrieb:</p>
<blockquote>
<p>Was spricht hier gegen SAX? Wenn ich das richtig verstanden habe wird das Dokument einmal durchlaufen, die Pipeline aufgebaut und fertig.</p>
</blockquote>
<p>Das Problem bei SAX ist, dass er das Parse- und Build-Modell gleichzeitig umsetzen muss während er die Konfig durchläuft. Das führt im Regelfall zur Redundanz und fordert ein sauberes 'Design by Contract' im System Engineering. D.h.: Wenn sich Abhängigkeiten zwischen Modulen ergeben kannst Du jene mit SAX nicht nutzen ohne das Parsen wieder von Vorne zu beginnen. Deshalb meine Empfehlung zu DOM.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1440793</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1440793</guid><dc:creator><![CDATA[Prof84]]></dc:creator><pubDate>Mon, 21 Jan 2008 17:39:57 GMT</pubDate></item><item><title><![CDATA[Reply to Der Aufbau meiner Konfigurationen ist schlecht on Tue, 22 Jan 2008 20:03:45 GMT]]></title><description><![CDATA[<p>Also wenn ich dich richtig verstanden hab, dann hat jedes module nen type und dann unterschiedliche parameter.<br />
Dann würde ich es so machen.</p>
<pre><code class="language-html">&lt;pipeline_modules&gt;
	&lt;module&gt; &lt;!-- Datenquelle --&gt;
		&lt;type&gt;SqlServerTableSource&lt;/type&gt;
        &lt;params&gt;
		     &lt;connection_string&gt;ConnectionString&lt;/connection_string&gt;
		     &lt;data_source&gt;EinTabellenName&lt;/data_source&gt; 
        &lt;/params&gt;
	&lt;/module&gt;
	...
&lt;/pipeline_modules&gt;
</code></pre>
<p>Dann würde ich type und die params an ne Factory übergeben. Die Factory hat ne Map mit key = type und value = Utilityklasse die das Modul erstellt. Die params übergibst du dann an die Utilityklasse und die erstellt damit das entsprechende Modul.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1441579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1441579</guid><dc:creator><![CDATA[Benutzernamen ein.]]></dc:creator><pubDate>Tue, 22 Jan 2008 20:03:45 GMT</pubDate></item><item><title><![CDATA[Reply to Der Aufbau meiner Konfigurationen ist schlecht on Tue, 22 Jan 2008 20:20:15 GMT]]></title><description><![CDATA[<p>Das mit der switch/if-Orgie lässt sich vielleicht lösen, indem du eine Klasse erstellst, die die Konfiguration einliest (egal ob jetzt XML oder etwas anderes), und dann die Werte nicht über irgendwelche if-Anweisungen in Variablen ablegst, sondern die eingelesen Werte in einer Map abspeicherst.</p>
<p>Nehmen wir an du hast eine einfache .ini-Datei mit folgendem Eintrag:</p>
<pre><code>farbe = rot
</code></pre>
<p>Dann liest du das ein, und speicherst das Paar (&quot;farbe&quot; , &quot;rot&quot;) ab.</p>
<p>Über die Klasse bietest du dann eine Funktion an, mit der du den Wert eines bestimmten Konfigurationseintrages erhälst.<br />
Also so etwas:</p>
<pre><code>std::string getValue(std::string conf);
</code></pre>
<p>Dann greift der Rest deines Codes halt nicht auf irgendwelche Variablen zu, sondern auf die Konfigurationsklasse.</p>
<p>Könnte so funktionieren.</p>
<p>Viele Grüße</p>
<p>EDIT:<br />
Vielleicht war das sowas Ähnliches, wie mein Vorposter mit seiner Factory-Lösung meinte...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1441587</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1441587</guid><dc:creator><![CDATA[nevermore]]></dc:creator><pubDate>Tue, 22 Jan 2008 20:20:15 GMT</pubDate></item><item><title><![CDATA[Reply to Der Aufbau meiner Konfigurationen ist schlecht on Tue, 22 Jan 2008 20:23:16 GMT]]></title><description><![CDATA[<p>Prof84 schrieb:</p>
<blockquote>
<p>finix schrieb:</p>
<blockquote>
<p>Was meinst du denn damit?</p>
</blockquote>
<p>Wenn er ein variables Konfigurationsschema hat, muss er naturlich in seiner Applikation ein variables Parse- und Build-Model bauen. So kann man eine Ausrollung des Baumes verhindern, was dann zu unzähligen Fallunterscheidungen führen würde.</p>
</blockquote>
<p>Ich weiß dass du gerne mit Fachwörtern und Buzzwörtern und Phrasen hantierst, aber könntest du dich einen Augenblick zügeln?</p>
<p>Deine Ausführung verrät mir kein bisschen worin du das Problem eines &quot;variables Konfigurationsschemas&quot; siehst, was du überhaupt mit &quot;Ausrollung des Baumes&quot; meinst bzw. wo die &quot;unzähligen Fallunterscheidungen&quot; herkommen oder wie das Composite Pattern hier Abhilfe schafft.</p>
<p>Prof84 schrieb:</p>
<blockquote>
<p>finix schrieb:</p>
<blockquote>
<p>Was spricht hier gegen SAX? Wenn ich das richtig verstanden habe wird das Dokument einmal durchlaufen, die Pipeline aufgebaut und fertig.</p>
</blockquote>
<p>Das Problem bei SAX ist, dass er das Parse- und Build-Modell gleichzeitig umsetzen muss während er die Konfig durchläuft. Das führt im Regelfall zur Redundanz und fordert ein sauberes 'Design by Contract' im System Engineering. D.h.: Wenn sich Abhängigkeiten zwischen Modulen ergeben kannst Du jene mit SAX nicht nutzen ohne das Parsen wieder von Vorne zu beginnen. Deshalb meine Empfehlung zu DOM.</p>
</blockquote>
<p>Inwieweit ist ein Single Pass Modell ein Problem (sicher nicht wegen &quot;Abhängigkeiten zwischen Modulen&quot;)? Wegen der SAX-spezifischen Redundanz (was meinst du damit, und wo kommt die her)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1441589</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1441589</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Tue, 22 Jan 2008 20:23:16 GMT</pubDate></item><item><title><![CDATA[Reply to Der Aufbau meiner Konfigurationen ist schlecht on Thu, 24 Jan 2008 09:53:32 GMT]]></title><description><![CDATA[<p>Benutzernamen ein. schrieb:</p>
<blockquote>
<p>Also wenn ich dich richtig verstanden hab, dann hat jedes module nen type und dann unterschiedliche parameter.<br />
Dann würde ich es so machen.</p>
<pre><code class="language-html">&lt;pipeline_modules&gt;
	&lt;module&gt; &lt;!-- Datenquelle --&gt;
		&lt;type&gt;SqlServerTableSource&lt;/type&gt;
        &lt;params&gt;
		     &lt;connection_string&gt;ConnectionString&lt;/connection_string&gt;
		     &lt;data_source&gt;EinTabellenName&lt;/data_source&gt; 
        &lt;/params&gt;
	&lt;/module&gt;
	...
&lt;/pipeline_modules&gt;
</code></pre>
<p>Dann würde ich type und die params an ne Factory übergeben. Die Factory hat ne Map mit key = type und value = Utilityklasse die das Modul erstellt. Die params übergibst du dann an die Utilityklasse und die erstellt damit das entsprechende Modul.</p>
</blockquote>
<p>Die Idee gefällt mir gut. Es gab noch andere hilfreiche Tips, ich hab schon eine Vorstellung davon, wie ich das kombiniere und wie das Endprodukt aussieht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Danke an alle!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1442597</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1442597</guid><dc:creator><![CDATA[endline.]]></dc:creator><pubDate>Thu, 24 Jan 2008 09:53:32 GMT</pubDate></item></channel></rss>