<?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[String speichern laden --&amp;gt; Fehler?]]></title><description><![CDATA[<p>Hi,<br />
habe schon im Forum gesucht, leider erfolglos.<br />
Also ich will ein String speichern und es wieder Laden und ausgeben. Nur leider wird nach dem laden dem String so seltsame Zeichen angehängt. Z.b. wenn ich &quot;Cube&quot; speichere, lade und dann ausgebe kommt &quot;Cube&quot; - warum? Könnt ihr mir helfen?</p>
<p>Hier der Code:</p>
<pre><code class="language-cpp">// S P E I C H E R N
    TFileStream* Strm = new TFileStream(Filename, fmCreate);

/* [...] andere daten werden geschrieben */
      short NSize = Layers.Name.Length();
      Strm-&gt;Write(&amp;NSize, sizeof(short));
      Strm-&gt;Write(Layers.Name.c_str(), Layers.Name.Length());
/* [...] andere daten werden geschrieben */

    delete Strm;

// L A D E N
      // Stream erstellen
      TFileStream* Strm = new TFileStream(OpenPictureDialog1-&gt;FileName, fmOpenRead);

[...] sonstige daten laden

        sLayer NewLayer;

        short NSize = 0;
        Strm-&gt;Read(&amp;NSize, sizeof(short));    
        char* buffer = new char[NSize];
        Strm-&gt;Read(buffer, NSize);      
        NewLayer.Name = buffer;
        delete buffer;

[...] sonstige daten laden

      // Datei freigeben
      delete Strm;
</code></pre>
<p>danke schonmal im Voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/90516/string-speichern-laden-gt-fehler</link><generator>RSS for Node</generator><lastBuildDate>Mon, 06 Jul 2026 20:04:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/90516.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 29 Oct 2004 21:48:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to String speichern laden --&amp;gt; Fehler? on Fri, 29 Oct 2004 21:48:56 GMT]]></title><description><![CDATA[<p>Hi,<br />
habe schon im Forum gesucht, leider erfolglos.<br />
Also ich will ein String speichern und es wieder Laden und ausgeben. Nur leider wird nach dem laden dem String so seltsame Zeichen angehängt. Z.b. wenn ich &quot;Cube&quot; speichere, lade und dann ausgebe kommt &quot;Cube&quot; - warum? Könnt ihr mir helfen?</p>
<p>Hier der Code:</p>
<pre><code class="language-cpp">// S P E I C H E R N
    TFileStream* Strm = new TFileStream(Filename, fmCreate);

/* [...] andere daten werden geschrieben */
      short NSize = Layers.Name.Length();
      Strm-&gt;Write(&amp;NSize, sizeof(short));
      Strm-&gt;Write(Layers.Name.c_str(), Layers.Name.Length());
/* [...] andere daten werden geschrieben */

    delete Strm;

// L A D E N
      // Stream erstellen
      TFileStream* Strm = new TFileStream(OpenPictureDialog1-&gt;FileName, fmOpenRead);

[...] sonstige daten laden

        sLayer NewLayer;

        short NSize = 0;
        Strm-&gt;Read(&amp;NSize, sizeof(short));    
        char* buffer = new char[NSize];
        Strm-&gt;Read(buffer, NSize);      
        NewLayer.Name = buffer;
        delete buffer;

[...] sonstige daten laden

      // Datei freigeben
      delete Strm;
</code></pre>
<p>danke schonmal im Voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/640769</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/640769</guid><dc:creator><![CDATA[Salim]]></dc:creator><pubDate>Fri, 29 Oct 2004 21:48:56 GMT</pubDate></item><item><title><![CDATA[Reply to String speichern laden --&amp;gt; Fehler? on Sat, 30 Oct 2004 10:06:13 GMT]]></title><description><![CDATA[<p>Salim,<br />
Speichern und Laden sieht korrekt aus. Erst bei folgender Zeile...</p>
<p>Salim schrieb:</p>
<blockquote>
<pre><code class="language-cpp">NewLayer.Name = buffer;
</code></pre>
</blockquote>
<p>...interpretierst Du &quot;buffer&quot; als C-String. Ein C-String ist eine Character-Array, daß durch ein 0-Byte termininiert (abgeschlossen) ist. Da dies bei Dir nicht der Fall ist, ist nicht klar, wo Dein C-String aufhört. Daß nur ein Leerzeichen zuviel ist, ist reiner Zufall. Es hätten auch 42 total sinnlose andere Zeichen sein können.</p>
<pre><code class="language-cpp">char* buffer = new char[NSize + 1];
buffer[NSize] = 0;
</code></pre>
<p>Das ganze ist ein klassisches Problem und jedes gute Buch wird Dir dazu Informationen liefern ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/640871</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/640871</guid><dc:creator><![CDATA[dschensky]]></dc:creator><pubDate>Sat, 30 Oct 2004 10:06:13 GMT</pubDate></item><item><title><![CDATA[Reply to String speichern laden --&amp;gt; Fehler? on Sat, 30 Oct 2004 10:46:12 GMT]]></title><description><![CDATA[<p>Ooops. Wusste ich nicht. Ich dachte der speichert und ladet den &quot;Null Terminator&quot; automatisch. Ich programmiere ja eigentlich auch mit VC++ Spiele, da hat meine keine BCB Strings, deswegen wusste ich das nicht.<br />
Ich hoffe ihr Verzeit mir den dummen Fehler <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="🙂"
    /><br />
Also ich hab jetzt das so gemacht wie du es gesagt hast, hab nur &quot; = '\0';&quot; als Terminator geschrieben, kann ja sein dass das das Gleiche ist, aber ist halt gewohnheitssache. Und tatsächlich, es klappt!<br />
Vielen vielen vielen Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/640888</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/640888</guid><dc:creator><![CDATA[Salim]]></dc:creator><pubDate>Sat, 30 Oct 2004 10:46:12 GMT</pubDate></item><item><title><![CDATA[Reply to String speichern laden --&amp;gt; Fehler? on Sat, 30 Oct 2004 12:59:45 GMT]]></title><description><![CDATA[<p>Salim schrieb:</p>
<blockquote>
<p>... Ich programmiere ja eigentlich auch mit VC++ Spiele, da hat meine keine BCB Strings, deswegen wusste ich das nicht. ...</p>
</blockquote>
<p>Ich bin mir zu 100% sicher das du im VC++ Compiler ebenfalls char-Arrays mit einem 0-Byte abschließen musst. <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/640995</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/640995</guid><dc:creator><![CDATA[PuppetMaster2k]]></dc:creator><pubDate>Sat, 30 Oct 2004 12:59:45 GMT</pubDate></item><item><title><![CDATA[Reply to String speichern laden --&amp;gt; Fehler? on Sat, 30 Oct 2004 14:23:56 GMT]]></title><description><![CDATA[<p>Nicht wenn du z.B.:</p>
<pre><code class="language-cpp">char* String1 = &quot;Mein String1&quot;;
char* String2 = &quot;Mein String2&quot;;
printf(&quot;%s %s&quot;, String1, String2);
</code></pre>
<p>machst, oder irre ich mich da?</p>
<blockquote>
<p>... Ich programmiere ja eigentlich auch mit VC++ Spiele, da hat meine keine BCB Strings, deswegen wusste ich das nicht. ...</p>
</blockquote>
<p>Außerdem hatte das eher damit zu tun, dass ich dachte der BCB String das automatisch macht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/641050</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/641050</guid><dc:creator><![CDATA[Salim]]></dc:creator><pubDate>Sat, 30 Oct 2004 14:23:56 GMT</pubDate></item></channel></rss>