<?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[Fragen zu &amp;quot;_di_IXMLDocument&amp;quot;]]></title><description><![CDATA[<p>Hi Fans der Delphi-Interfaces!</p>
<p>Ich habe mir mit TXMLDocument-Objekt folgendes XML-File (Beispiel) generiert:</p>
<pre><code class="language-cpp">&lt;!--This file is machine generated. Don't change!--&gt;
&lt;Optimizer&gt;
  &lt;TimeConst&gt;777&lt;/TimeConst&gt;
  &lt;BufferFactor&gt;5&lt;/BufferFactor&gt;
  &lt;PulseTime&gt;8&lt;/PulseTime&gt;
  &lt;StreamServerAdress&gt;192.168.2.100&lt;/StreamServerAdress&gt;
  &lt;OptimizerName&gt;opt1&lt;/OptimizerName&gt;
  &lt;Situations&gt;
    &lt;BaseSituations&gt;
      &lt;TestSit1&gt;
        &lt;Id&gt;1&lt;/Id&gt;
      &lt;/TestSit1&gt;
      &lt;TestSit2&gt;
        &lt;Id&gt;1&lt;/Id&gt;
      &lt;/TestSit2&gt;
      &lt;TestSit3&gt;
        &lt;Id&gt;1&lt;/Id&gt;
      &lt;/TestSit3&gt;
      &lt;TestSit4&gt;
        &lt;Id&gt;1&lt;/Id&gt;
      &lt;/TestSit4&gt;
    &lt;/BaseSituations&gt;
    &lt;EmergencySituations/&gt;
    &lt;ReferenceSituations&gt;
      &lt;SituationFiles&gt;
        &lt;File&gt;c:\toast.jpg&lt;/File&gt;
      &lt;/SituationFiles&gt;
    &lt;/ReferenceSituations&gt;
  &lt;/Situations&gt;
  &lt;Attributefunctions/&gt;
  &lt;Signals&gt;
    &lt;Huhu&gt;
      &lt;Id&gt;2&lt;/Id&gt;
    &lt;/Huhu&gt;
    &lt;Hooo&gt;
      &lt;Id&gt;4&lt;/Id&gt;
    &lt;/Hooo&gt;
  &lt;/Signals&gt;
&lt;/Optimizer&gt;
</code></pre>
<p>So.</p>
<p>mit der Funktion &quot;InsertBaseSituation(...)&quot; kann ich Basisituationen noch und nöcher erzeugen. Funktioniert soweit auch ganz gut.</p>
<pre><code class="language-cpp">bool XMLDBAccess::InsertBaseSituation(AnsiString sName)
{
    _di_IXMLNode BSitNode;
    _di_IXMLNode NewBSit;
    _di_IXMLNode NewSigId;

    bool bRetVal = true;

    try
    {
       BSitNode = GetBaseSituationNode();

       if (BSitNode)
       {
          NewBSit = XMLDoc-&gt;DocumentElement-&gt;AddChild(WideString(sName));
          BSitNode-&gt;ChildNodes-&gt;Add(NewBSit);

          NewSigId = XMLDoc-&gt;CreateElement(L&quot;Id&quot;, L&quot;&quot;);
          NewSigId-&gt;NodeValue = 1;

          NewBSit-&gt;ChildNodes-&gt;Add(NewSigId);
       }
       else bRetVal = false;
    }
    catch ( ... )
    {
          bRetVal = false;
    }

    return bRetVal;
}
</code></pre>
<p>Im gleichen Atemzug habe ich mir noch eine Funktion namens &quot;DeleteBaseSituation(...)&quot; geschrieben:</p>
<pre><code class="language-cpp">bool XMLDBAccess::DeleteBaseSituation(int iIndex)
{
    _di_IXMLNode BSitNode;
    _di_IXMLNode TempNode;
    bool bRetVal = true;

    try
    {
       BSitNode = GetBaseSituationNode();

       if (BSitNode) BSitNode-&gt;ChildNodes-&gt;Delete(i);
       else bRetVal = false;
    }
    catch ( ... )
    {
          bRetVal = false;
    }

    return bRetVal;
}
</code></pre>
<p>Das komische ist aber, dass die eintsprechende Childnode (im Bsp: 0) nicht gelöscht wird, sondern nur folgendes heraus kommt (Verschiebung des Textes):</p>
<pre><code class="language-cpp">&lt;!--This file is machine generated. Don't change!--&gt;
&lt;Optimizer&gt;
  &lt;TimeConst&gt;777&lt;/TimeConst&gt;
  &lt;BufferFactor&gt;5&lt;/BufferFactor&gt;
  &lt;PulseTime&gt;8&lt;/PulseTime&gt;
  &lt;StreamServerAdress&gt;192.168.2.100&lt;/StreamServerAdress&gt;
  &lt;OptimizerName&gt;opt1&lt;/OptimizerName&gt;
  &lt;Situations&gt;
    &lt;BaseSituations&gt;  &lt;TestSit1&gt; // 0
        &lt;Id&gt;1&lt;/Id&gt;
      &lt;/TestSit1&gt;
      &lt;TestSit2&gt;
        &lt;Id&gt;1&lt;/Id&gt;
      &lt;/TestSit2&gt;
      &lt;TestSit3&gt;
        &lt;Id&gt;1&lt;/Id&gt;
      &lt;/TestSit3&gt;
      &lt;TestSit4&gt;
        &lt;Id&gt;1&lt;/Id&gt;
      &lt;/TestSit4&gt;
    &lt;/BaseSituations&gt;
    &lt;EmergencySituations/&gt;
    &lt;ReferenceSituations&gt;
      &lt;SituationFiles&gt;
        &lt;File&gt;c:\toast.jpg&lt;/File&gt;
      &lt;/SituationFiles&gt;
    &lt;/ReferenceSituations&gt;
  &lt;/Situations&gt;
  &lt;Attributefunctions/&gt;
  &lt;Signals&gt;
    &lt;Huhu&gt;
      &lt;Id&gt;2&lt;/Id&gt;
    &lt;/Huhu&gt;
    &lt;Hooo&gt;
      &lt;Id&gt;4&lt;/Id&gt;
    &lt;/Hooo&gt;
  &lt;/Signals&gt;
&lt;/Optimizer&gt;
</code></pre>
<p>Hat jemand eine Erklärung dafür, und wie kann ich nun die Node richtig löschen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/82341/fragen-zu-quot-_di_ixmldocument-quot</link><generator>RSS for Node</generator><lastBuildDate>Wed, 01 Jul 2026 08:20:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/82341.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 10 Aug 2004 13:17:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fragen zu &amp;quot;_di_IXMLDocument&amp;quot; on Tue, 10 Aug 2004 13:19:55 GMT]]></title><description><![CDATA[<p>Hi Fans der Delphi-Interfaces!</p>
<p>Ich habe mir mit TXMLDocument-Objekt folgendes XML-File (Beispiel) generiert:</p>
<pre><code class="language-cpp">&lt;!--This file is machine generated. Don't change!--&gt;
&lt;Optimizer&gt;
  &lt;TimeConst&gt;777&lt;/TimeConst&gt;
  &lt;BufferFactor&gt;5&lt;/BufferFactor&gt;
  &lt;PulseTime&gt;8&lt;/PulseTime&gt;
  &lt;StreamServerAdress&gt;192.168.2.100&lt;/StreamServerAdress&gt;
  &lt;OptimizerName&gt;opt1&lt;/OptimizerName&gt;
  &lt;Situations&gt;
    &lt;BaseSituations&gt;
      &lt;TestSit1&gt;
        &lt;Id&gt;1&lt;/Id&gt;
      &lt;/TestSit1&gt;
      &lt;TestSit2&gt;
        &lt;Id&gt;1&lt;/Id&gt;
      &lt;/TestSit2&gt;
      &lt;TestSit3&gt;
        &lt;Id&gt;1&lt;/Id&gt;
      &lt;/TestSit3&gt;
      &lt;TestSit4&gt;
        &lt;Id&gt;1&lt;/Id&gt;
      &lt;/TestSit4&gt;
    &lt;/BaseSituations&gt;
    &lt;EmergencySituations/&gt;
    &lt;ReferenceSituations&gt;
      &lt;SituationFiles&gt;
        &lt;File&gt;c:\toast.jpg&lt;/File&gt;
      &lt;/SituationFiles&gt;
    &lt;/ReferenceSituations&gt;
  &lt;/Situations&gt;
  &lt;Attributefunctions/&gt;
  &lt;Signals&gt;
    &lt;Huhu&gt;
      &lt;Id&gt;2&lt;/Id&gt;
    &lt;/Huhu&gt;
    &lt;Hooo&gt;
      &lt;Id&gt;4&lt;/Id&gt;
    &lt;/Hooo&gt;
  &lt;/Signals&gt;
&lt;/Optimizer&gt;
</code></pre>
<p>So.</p>
<p>mit der Funktion &quot;InsertBaseSituation(...)&quot; kann ich Basisituationen noch und nöcher erzeugen. Funktioniert soweit auch ganz gut.</p>
<pre><code class="language-cpp">bool XMLDBAccess::InsertBaseSituation(AnsiString sName)
{
    _di_IXMLNode BSitNode;
    _di_IXMLNode NewBSit;
    _di_IXMLNode NewSigId;

    bool bRetVal = true;

    try
    {
       BSitNode = GetBaseSituationNode();

       if (BSitNode)
       {
          NewBSit = XMLDoc-&gt;DocumentElement-&gt;AddChild(WideString(sName));
          BSitNode-&gt;ChildNodes-&gt;Add(NewBSit);

          NewSigId = XMLDoc-&gt;CreateElement(L&quot;Id&quot;, L&quot;&quot;);
          NewSigId-&gt;NodeValue = 1;

          NewBSit-&gt;ChildNodes-&gt;Add(NewSigId);
       }
       else bRetVal = false;
    }
    catch ( ... )
    {
          bRetVal = false;
    }

    return bRetVal;
}
</code></pre>
<p>Im gleichen Atemzug habe ich mir noch eine Funktion namens &quot;DeleteBaseSituation(...)&quot; geschrieben:</p>
<pre><code class="language-cpp">bool XMLDBAccess::DeleteBaseSituation(int iIndex)
{
    _di_IXMLNode BSitNode;
    _di_IXMLNode TempNode;
    bool bRetVal = true;

    try
    {
       BSitNode = GetBaseSituationNode();

       if (BSitNode) BSitNode-&gt;ChildNodes-&gt;Delete(i);
       else bRetVal = false;
    }
    catch ( ... )
    {
          bRetVal = false;
    }

    return bRetVal;
}
</code></pre>
<p>Das komische ist aber, dass die eintsprechende Childnode (im Bsp: 0) nicht gelöscht wird, sondern nur folgendes heraus kommt (Verschiebung des Textes):</p>
<pre><code class="language-cpp">&lt;!--This file is machine generated. Don't change!--&gt;
&lt;Optimizer&gt;
  &lt;TimeConst&gt;777&lt;/TimeConst&gt;
  &lt;BufferFactor&gt;5&lt;/BufferFactor&gt;
  &lt;PulseTime&gt;8&lt;/PulseTime&gt;
  &lt;StreamServerAdress&gt;192.168.2.100&lt;/StreamServerAdress&gt;
  &lt;OptimizerName&gt;opt1&lt;/OptimizerName&gt;
  &lt;Situations&gt;
    &lt;BaseSituations&gt;  &lt;TestSit1&gt; // 0
        &lt;Id&gt;1&lt;/Id&gt;
      &lt;/TestSit1&gt;
      &lt;TestSit2&gt;
        &lt;Id&gt;1&lt;/Id&gt;
      &lt;/TestSit2&gt;
      &lt;TestSit3&gt;
        &lt;Id&gt;1&lt;/Id&gt;
      &lt;/TestSit3&gt;
      &lt;TestSit4&gt;
        &lt;Id&gt;1&lt;/Id&gt;
      &lt;/TestSit4&gt;
    &lt;/BaseSituations&gt;
    &lt;EmergencySituations/&gt;
    &lt;ReferenceSituations&gt;
      &lt;SituationFiles&gt;
        &lt;File&gt;c:\toast.jpg&lt;/File&gt;
      &lt;/SituationFiles&gt;
    &lt;/ReferenceSituations&gt;
  &lt;/Situations&gt;
  &lt;Attributefunctions/&gt;
  &lt;Signals&gt;
    &lt;Huhu&gt;
      &lt;Id&gt;2&lt;/Id&gt;
    &lt;/Huhu&gt;
    &lt;Hooo&gt;
      &lt;Id&gt;4&lt;/Id&gt;
    &lt;/Hooo&gt;
  &lt;/Signals&gt;
&lt;/Optimizer&gt;
</code></pre>
<p>Hat jemand eine Erklärung dafür, und wie kann ich nun die Node richtig löschen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/579016</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/579016</guid><dc:creator><![CDATA[F98]]></dc:creator><pubDate>Tue, 10 Aug 2004 13:19:55 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zu &amp;quot;_di_IXMLDocument&amp;quot; on Tue, 10 Aug 2004 13:23:27 GMT]]></title><description><![CDATA[<p>Und was sucht das hier im C++ Forum`? <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="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/579032</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/579032</guid><dc:creator><![CDATA[Gast_neu]]></dc:creator><pubDate>Tue, 10 Aug 2004 13:23:27 GMT</pubDate></item></channel></rss>