<?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[Ini dateien]]></title><description><![CDATA[<p>Ich suche eine Plattformunabhängige Lib um ini dateien zu erstellen. Ich benutze Qt und will nicht auf MFC funktionen zugreifen. Ich hatte erst an XML gedacht aber XML wäre zu aufwendig den ich muss nur scrollpos, fenstergröße, etc. speichern. wenn jemand sowas kennt bitte posten!<br />
Ciao</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/44210/ini-dateien</link><generator>RSS for Node</generator><lastBuildDate>Sat, 25 Apr 2026 07:58:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/44210.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 29 Jul 2003 07:43:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Ini dateien on Tue, 29 Jul 2003 07:43:51 GMT]]></title><description><![CDATA[<p>Ich suche eine Plattformunabhängige Lib um ini dateien zu erstellen. Ich benutze Qt und will nicht auf MFC funktionen zugreifen. Ich hatte erst an XML gedacht aber XML wäre zu aufwendig den ich muss nur scrollpos, fenstergröße, etc. speichern. wenn jemand sowas kennt bitte posten!<br />
Ciao</p>
]]></description><link>https://www.c-plusplus.net/forum/post/320003</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/320003</guid><dc:creator><![CDATA[noppenwelle]]></dc:creator><pubDate>Tue, 29 Jul 2003 07:43:51 GMT</pubDate></item><item><title><![CDATA[Reply to Ini dateien on Tue, 29 Jul 2003 07:50:29 GMT]]></title><description><![CDATA[<p>Wenn Du sie nur Erstellen willst, dann schreibe sie Doch einfach mit Write in dem Ini-Schema. Das zusammenzusetzen ist ja weniger das Problem.</p>
<p>[Section]<br />
Key=Wert</p>
<p>Mehr ist es ja nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/320010</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/320010</guid><dc:creator><![CDATA[Frenzy]]></dc:creator><pubDate>Tue, 29 Jul 2003 07:50:29 GMT</pubDate></item><item><title><![CDATA[Reply to Ini dateien on Wed, 30 Jul 2003 08:59:24 GMT]]></title><description><![CDATA[<p>will was einfacheres haben *g*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/320846</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/320846</guid><dc:creator><![CDATA[noppenwelle]]></dc:creator><pubDate>Wed, 30 Jul 2003 08:59:24 GMT</pubDate></item><item><title><![CDATA[Reply to Ini dateien on Wed, 30 Jul 2003 09:43:33 GMT]]></title><description><![CDATA[<p>noppenwelle schrieb:</p>
<blockquote>
<p>will was einfacheres haben *g*</p>
</blockquote>
<p>hmm...Fällt mir auf die Schnelle nix anderes ein, was auch platformunabhängig ist. Das schnell hinzuschreiben ist doch kaum ein Aufwand. Interessanter dürfte Dein Problem erst werden, wenn Du aus dieser IniDatei Werte verändern/löschen willst. Dann mußt Du Dich zwangsweise mit den Strings herumschlagen.</p>
<p>Willst Du denn nur die Ini-Datei schreiben oder auch erweitern/ändern/löschen, ohne sie jedesmal neu zu schreiben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/320875</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/320875</guid><dc:creator><![CDATA[Frenzy]]></dc:creator><pubDate>Wed, 30 Jul 2003 09:43:33 GMT</pubDate></item><item><title><![CDATA[Reply to Ini dateien on Wed, 30 Jul 2003 10:56:29 GMT]]></title><description><![CDATA[<p>jo eigentlich will ich das schon <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>
]]></description><link>https://www.c-plusplus.net/forum/post/320919</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/320919</guid><dc:creator><![CDATA[noppenwelle]]></dc:creator><pubDate>Wed, 30 Jul 2003 10:56:29 GMT</pubDate></item><item><title><![CDATA[Reply to Ini dateien on Wed, 30 Jul 2003 19:59:06 GMT]]></title><description><![CDATA[<p>Das wird dann etwas aufwendiger, Denn wenn du in der Mitte Zeilen in der Länge änderst, mußt du das ganze File verkürzen oder verlängern.<br />
In inifiles sind Kommentare erlaubt und ähnliches.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/321308</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/321308</guid><dc:creator><![CDATA[PAD]]></dc:creator><pubDate>Wed, 30 Jul 2003 19:59:06 GMT</pubDate></item><item><title><![CDATA[Reply to Ini dateien on Wed, 30 Jul 2003 21:23:25 GMT]]></title><description><![CDATA[<p>Ich hab das so gelöst:</p>
<p>Eine Liste sammelt ein Pair auf seinen String (Sektion) und den Key.<br />
Der Key selbst wiederum ist eine Liste auf eine Struktur mit dem Wert des Keys dem Namen des Keys und einem flag ob es ein Kommentar ist.</p>
<pre><code class="language-cpp">struct key
{
 std::string name;
 std::string wert;
 bool kommentar;
}

std::list&lt;std::pair&lt;std::string,std::list&lt;key&gt; &gt; &gt;

Alternativ, wenn Du kommentare nicht speichern, sondern wegwerfen willst:

std::list&lt;std::pair&lt;std::string,std::list&lt;std::pair&lt;std::string,std::string&gt; &gt; &gt; &gt;
</code></pre>
<p>Lies die Datei zeilenweise ein, werte jede Zeile aus (key section kommentar) und leg es in der Datenstruktur ab.</p>
<p>Dann Arbeitest Du brav in der Struktur und am ende schreibst Du alles wieder zurück in eine Datei.</p>
<p>Ist sicherlich nicht die schnellste Variante die es gibt, aber man kann so eigentlich ganz gut Arbeiten vorallem wenn man häufig alle Keys einer Sektion z.B. braucht.</p>
<p>Bei Interesse sammel ich mal die Implementierung zuammen die ich hab und geb sie mal zum downloaden frei (alles standard). (Ich denke aber das man im Internet wesentlich bessere Lösungen finden kann).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/321402</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/321402</guid><dc:creator><![CDATA[Knuddlbaer]]></dc:creator><pubDate>Wed, 30 Jul 2003 21:23:25 GMT</pubDate></item><item><title><![CDATA[Reply to Ini dateien on Thu, 31 Jul 2003 05:24:00 GMT]]></title><description><![CDATA[<p>Lösungsvorschlag gefällt mir.<br />
Teile deine Bedennken bezüglich Geschwindigkeit</p>
<p>Hast du auch Continuation lines und Datenblöcke bedacht.<br />
Beides ist mir schon untergekommen.</p>
<p>Continuation lines<br />
[test]<br />
key=ajhajdasdkj\<br />
asöldklöasdkf\<br />
asdlökjakld\</p>
<p>Datenblöcke<br />
[test]<br />
data=4,5,ahAJKSDH<br />
221134,554433,223344,123456,00aa00<br />
00ff00,554453,245344,123456,00aaff<br />
221134,554433,223554,123456,ffaa00<br />
22ee34,dd4433,223344,123456,00aa00</p>
<p>War nur als Ergänzung gedacht</p>
<p>Viel Spaß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/321507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/321507</guid><dc:creator><![CDATA[PAD]]></dc:creator><pubDate>Thu, 31 Jul 2003 05:24:00 GMT</pubDate></item><item><title><![CDATA[Reply to Ini dateien on Thu, 31 Jul 2003 06:47:35 GMT]]></title><description><![CDATA[<p>Nö an Datenblöcke hab ich noch nicht gedacht.<br />
Ziel 1 war es die WinAPI aufrufe in der Firma zu ersetzen.<br />
Ziel 2: Die Reihenfolge der Daten darf nicht geändert werden.</p>
<p>Um Datenblöcke halten zu können müsste man erst mal die Regeln festlegen.</p>
<p>Block1=abcdef\<br />
ghijklmn</p>
<p>Das würde ich dann so umbauen (Policy) das die Zeilen in einen vector gespeichert werden.</p>
<p>Datenblöcke:<br />
Hm, gleiches Problem. Da müsste man Regeln festlegen die man dann implementieren kann. Man muß am anfang erkennen was man hat, das speichern und beim einlesen der nächsten Zeile prüfen ob es passt.</p>
<p>Block1=abcdef\</p>
<p>könnte ja auch bedeuten das der Nutzer wirklich abcdef\ haben wollte und keinen<br />
verbund.</p>
<p>Was den speed betrifft: Der Profiler sagt mir zumindest das ich nich langsammer geworden bin im gegensatz zur nutzung der WinAPI ;o) Kritisch wirds erst mit der Zeit wenn jede eintragung geprüft werden soll beim einlesen. (Unterstützt einfach einlesen und in die Struktur knallen oder jeden Eintrag kleinlichst prüfen ob er richtig ist. Und das dauert O<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/321510</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/321510</guid><dc:creator><![CDATA[Knuddlbaer]]></dc:creator><pubDate>Thu, 31 Jul 2003 06:47:35 GMT</pubDate></item><item><title><![CDATA[Reply to Ini dateien on Thu, 31 Jul 2003 06:47:15 GMT]]></title><description><![CDATA[<p>Genauso ist es gedacht</p>
<p>[test]<br />
wert=1234 edfg \ // dies ist ein Kommentar<br />
asdeg\<br />
ter<br />
=&quot;1234 edfg asdegter&quot;</p>
<p>Die guten alten C-Regeln helfen hier will ich eine Continuation line so ist das letzte Zeichen der Zeile<br />
ein'\' will den Character so schreibe ich '\'</p>
<p>Definition von Dateninhalten:<br />
Alles was dem Gleichheitszeichen in einem ini File nach einem Subkey folgt sind Dateninhalte.<br />
Dateninhalte bestehen aus einem oder mehreren Data-Items<br />
Diese werden wie folgt ausgewertet.<br />
• Kommentare werden entfernt (Kommentarzeichen //)<br />
• trailing (nachfolgende) Blanks werden entfernt,d.h Blanks nach einem Wort oder einem text<br />
• Bei Data-items wird zwischen Worten und Texten unterschieden:<br />
• Definition<br />
Wort jede Abfolge von Zeichen die nicht durch Whitespace Character aufgebrochen wird, ist<br />
ein Wort<br />
Text jede Abfolge von Worten die ¨uber Whitespace Character getrennt ist ist ein Text. Ein<br />
einzelner oder mehrere aufeinanderfolgende Whitespace Character sind ein Text.<br />
• Data-Items vom Typ Wort müssen nicht in ” eingeschlossen werden. Beim Lesen werden alle<br />
Whitespaces vor und alle Characters hinter dem ersten Wort entfernt und als C-String zurückgeliefert.<br />
• Data-Items vom Type Text müssen in ” eingeschlossen sein. Beim Lesen werden alle Characters<br />
vor dem ersten und nach dem letzten ” entfernt. Zwischen den beiden ” bleibt alles orginal<br />
erhalten. Der erste und der letzte ” wird ebenfalls entfernt und als C-String zur¨uckgeliefert.</p>
<p>Das sind die Regelen, die ich bei uns eingeführt habe. Wir nutzten das INI-File Konzept schon unter DOS für unsere Testgeräte<br />
und werden es auch weiter nutzen.</p>
<p>Datenblöcke habe ich öfters gesehen, aber bisher haben wir sie nicht gebraucht und deswegen weder Regeln noch eine<br />
Implementierung festgelegt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/321531</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/321531</guid><dc:creator><![CDATA[PAD]]></dc:creator><pubDate>Thu, 31 Jul 2003 06:47:15 GMT</pubDate></item><item><title><![CDATA[Reply to Ini dateien on Thu, 31 Jul 2003 06:54:00 GMT]]></title><description><![CDATA[<p>Hmm....</p>
<p>Das lässt sich doch machen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /><br />
Aber:<br />
Was ist wenn ich den String &quot;1234 Hallo Welt \&quot; haben will ?</p>
<p>Ich würde die Implementierung in der Hauptklasse nur soweit ändern das sie in der laage ist Zeilen die ein \ am ende haben zusammenzufügen.</p>
<p>Den rest, was ein Wort ist und was nicht soll die Anwendungsklasse für sich selbst ausmachen.</p>
<p>thx für die Anregungen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p>Mehrzeiler haben wir bisher nie im einsatz gehabt... Doch einmal.. Da hab ich die Umbrüche durch ein &quot;\n&quot; ersetzt O<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/321535</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/321535</guid><dc:creator><![CDATA[Knuddlbaer]]></dc:creator><pubDate>Thu, 31 Jul 2003 06:54:00 GMT</pubDate></item><item><title><![CDATA[Reply to Ini dateien on Thu, 31 Jul 2003 07:46:08 GMT]]></title><description><![CDATA[<p>Der würde in unserer Darstellung als Text gelten somit im file mit &quot; stehen.</p>
<p>d.h.</p>
<p>[test]<br />
value=&quot;1234 Hallo Welt \&quot;</p>
<p>Das gleiche mit Continuation line</p>
<p>[test]<br />
value=&quot;1234 &quot;\<br />
Hallo Welt \&quot;</p>
<p>Was heißt bei dir am Ende ein &quot;\&quot; haben. Dürfen danach noch whitespace Character und Kommentare stehen oder nicht.</p>
<p>Habe schlechte Erfahrung gemacht mit Nutzern, die solche Files mit einem ASCII Editor betrachtet oder geändert haben.<br />
Kommentare und whitespacecharacters nach dem &quot;\&quot; würde ich ignorieren.<br />
Bei uns umfasst das Lesen einer solchen Keys folgende Schritte</p>
<p>-lesen der Zeile mit fgets<br />
-entfernen des &quot;\n&quot; am Ende der Zeile<br />
-entfernen von Kommentaren<br />
-entfernen von trailing whitespaces.<br />
-falls der String leer ist, zurück zum Anfang<br />
-checken auf und bearbeiten von Continuation lines<br />
-Ergebnis liefern</p>
]]></description><link>https://www.c-plusplus.net/forum/post/321568</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/321568</guid><dc:creator><![CDATA[PAD]]></dc:creator><pubDate>Thu, 31 Jul 2003 07:46:08 GMT</pubDate></item><item><title><![CDATA[Reply to Ini dateien on Thu, 31 Jul 2003 07:50:36 GMT]]></title><description><![CDATA[<p>Heheh da liest Du auch zeilenweise ein :-p<br />
Lieg ich garnicht mal soweit weg mit meiner Lösung.</p>
<p>(tipp: mit getline und std::string kann Dir die länge der Zeile egal sein ;o)</p>
<p>Bei mir war das Ziel mich dicht am verhalten der WinAPI zu halten da diese ersetzt werden sollte. Aber ich werde mal eure Idee klauen und die auch umsetzen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /> Das ganze dann als Policy ausgelegt kann sich der Anwender die art der Ini selbst raussuchen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/321569</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/321569</guid><dc:creator><![CDATA[Knuddlbaer]]></dc:creator><pubDate>Thu, 31 Jul 2003 07:50:36 GMT</pubDate></item></channel></rss>