<?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[[Serialisierung]]]></title><description><![CDATA[<p>Hi,</p>
<p>nachdem ich die LinkedList aufgeben musste (siehe vorige Threads) möchte ich<br />
nun ein Array binär(?) in eine Datei schreiben. Ich habe ein Array mit mehreren<br />
komplexen Objekten vorliegen und möchte das sowohl in diese Datei schreiben,<br />
als auch als Array auslesen können.</p>
<p>Der Plan sah so aus:</p>
<pre><code class="language-cpp">CFile f(DATEINAME, CFile::modeReadWrite);
CArchive a(%f);
a&lt;&lt;kontake;
</code></pre>
<p>Wobei kontakte das Array ist.<br />
Diese Idee stammt aus Horchsteins Thread &quot;Serialisierung - weitere Frage&quot; und<br />
zwingt meinen Compiler leider dazu sich über die Übergabe der Referenz eines<br />
File-Objekts an den Konstruktor des CArchivs zu beschweren.</p>
<p>Hat einer von Euch ne Idee weshalb?<br />
Ist das überhaupt so realisierbar?</p>
<p>Danke im Voraus,<br />
Khadgar</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/6573/serialisierung</link><generator>RSS for Node</generator><lastBuildDate>Tue, 21 Apr 2026 22:04:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/6573.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 10 Jul 2003 03:16:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [Serialisierung] on Thu, 10 Jul 2003 03:16:00 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>nachdem ich die LinkedList aufgeben musste (siehe vorige Threads) möchte ich<br />
nun ein Array binär(?) in eine Datei schreiben. Ich habe ein Array mit mehreren<br />
komplexen Objekten vorliegen und möchte das sowohl in diese Datei schreiben,<br />
als auch als Array auslesen können.</p>
<p>Der Plan sah so aus:</p>
<pre><code class="language-cpp">CFile f(DATEINAME, CFile::modeReadWrite);
CArchive a(%f);
a&lt;&lt;kontake;
</code></pre>
<p>Wobei kontakte das Array ist.<br />
Diese Idee stammt aus Horchsteins Thread &quot;Serialisierung - weitere Frage&quot; und<br />
zwingt meinen Compiler leider dazu sich über die Übergabe der Referenz eines<br />
File-Objekts an den Konstruktor des CArchivs zu beschweren.</p>
<p>Hat einer von Euch ne Idee weshalb?<br />
Ist das überhaupt so realisierbar?</p>
<p>Danke im Voraus,<br />
Khadgar</p>
]]></description><link>https://www.c-plusplus.net/forum/post/31943</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/31943</guid><dc:creator><![CDATA[Khadgar]]></dc:creator><pubDate>Thu, 10 Jul 2003 03:16:00 GMT</pubDate></item><item><title><![CDATA[Reply to [Serialisierung] on Thu, 10 Jul 2003 03:48:00 GMT]]></title><description><![CDATA[<p>Denk' dran, dass du dem Archiv auch sagen musst, wie es zu funktionieren hat! (nebenbei sind die genauen Fehlermeldungen des Compilers in solchen Fällen meist hilfreich... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> )</p>
<pre><code class="language-cpp">CFile file(&quot;bla.txt&quot;, CFile::modeCreate | CFile::modeWrite);
CArchive ar(&amp;file, CArchive::store);
ar &lt;&lt; 123;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/31944</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/31944</guid><dc:creator><![CDATA[tag]]></dc:creator><pubDate>Thu, 10 Jul 2003 03:48:00 GMT</pubDate></item><item><title><![CDATA[Reply to [Serialisierung] on Thu, 10 Jul 2003 10:59:00 GMT]]></title><description><![CDATA[<p>Hi tag,<br />
Dank dir vielmals für die schnelle Antwort.<br />
Dass ich dem CArchive noch einen Flag übergeben muss wusste ich nicht, denn das<br />
war in dem anderen Beispiel auch nicht gegeben (*)<br />
Ich hab VC jetzt dank dir auf einen Fehler runter, jedoch beschwert er sich<br />
immer noch wie folgt:</p>
<p>error C2678: binary '&lt;&lt;' : no operator defined which takes a left-hand operand<br />
of type 'class CArchive' (or there is no acceptable conversion)</p>
<p>Der Sourcecode sieht mittlerweile so aus:</p>
<pre><code class="language-cpp">CFile f(DATEINAME, CFile::modeReadWrite);
CArchive a(&amp;f, CArchive::store);
a&lt;&lt;kontakte;
</code></pre>
<p>Kann da jemand was mit Anfangen?</p>
<p>* [url] <a href="http://www.c-plusplus.net/forum/topic,4799.html" rel="nofollow">Serialisierung - weitere Frage</a> [/url]</p>
<p>[edit: Und hier musste die richtige URL rein. Bis Heute wohl ein wenig<br />
durcheinander :D]</p>
<p>[ Dieser Beitrag wurde am 10.07.2003 um 13:05 Uhr von <strong>Khadgar</strong> editiert. ]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/31945</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/31945</guid><dc:creator><![CDATA[Khadgar]]></dc:creator><pubDate>Thu, 10 Jul 2003 10:59:00 GMT</pubDate></item><item><title><![CDATA[Reply to [Serialisierung] on Thu, 10 Jul 2003 11:01:00 GMT]]></title><description><![CDATA[<p>[Ausversehen 2x gepostet]</p>
<p>[ Dieser Beitrag wurde am 10.07.2003 um 13:03 Uhr von <strong>Khadgar</strong> editiert. ]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/31946</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/31946</guid><dc:creator><![CDATA[Khadgar]]></dc:creator><pubDate>Thu, 10 Jul 2003 11:01:00 GMT</pubDate></item><item><title><![CDATA[Reply to [Serialisierung] on Thu, 10 Jul 2003 11:07:00 GMT]]></title><description><![CDATA[<p>Hallo.</p>
<p>Was für einen Typ hat eigentlich die Variable &quot;kontakt&quot;?</p>
<p>Bye</p>
]]></description><link>https://www.c-plusplus.net/forum/post/31947</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/31947</guid><dc:creator><![CDATA[Sanji]]></dc:creator><pubDate>Thu, 10 Jul 2003 11:07:00 GMT</pubDate></item><item><title><![CDATA[Reply to [Serialisierung] on Thu, 10 Jul 2003 11:32:00 GMT]]></title><description><![CDATA[<p>Das Array &quot;kontakte&quot; enthält Objekte vom Typ &quot;Kontakt&quot;.<br />
Diese Objekte habe ich mir selbst zusammengebaut und so wie es scheint bin<br />
ich momentan unfähig diese so zu casten, dass ich die irgendwie in das<br />
Archiv bekomme.</p>
<p>Geht das irgendwie?<br />
Sollte ich doch auf einfache Datentypen zurückgreifen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/31948</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/31948</guid><dc:creator><![CDATA[Khadgar]]></dc:creator><pubDate>Thu, 10 Jul 2003 11:32:00 GMT</pubDate></item><item><title><![CDATA[Reply to [Serialisierung] on Thu, 10 Jul 2003 16:35:00 GMT]]></title><description><![CDATA[<p>inline CArchive&amp; operator&lt;&lt;(CArchive&amp; ar, CKontakt&amp; kontakt)<br />
{<br />
kontakt.Serialize(ar);<br />
return ar;<br />
}<br />
inline CArchive&amp; operator&gt;&gt;(CArchive&amp; ar, CKontakt&amp; kontakt)<br />
{<br />
kontakt.Serialize(ar);<br />
return ar;<br />
}</p>
<p>Und den Rest erledigst Du dann in CKontakt::Serialize <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/31949</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/31949</guid><dc:creator><![CDATA[tag]]></dc:creator><pubDate>Thu, 10 Jul 2003 16:35:00 GMT</pubDate></item><item><title><![CDATA[Reply to [Serialisierung] on Thu, 10 Jul 2003 19:16:00 GMT]]></title><description><![CDATA[<p>Dank dir tag,<br />
aber wo muss der Code rein?<br />
[Edit] Und wo soll die CKontakt::serialize() herkommen? [/Edit]</p>
<p>[ Dieser Beitrag wurde am 10.07.2003 um 21:17 Uhr von <strong>Khadgar</strong> editiert. ]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/31950</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/31950</guid><dc:creator><![CDATA[Khadgar]]></dc:creator><pubDate>Thu, 10 Jul 2003 19:16:00 GMT</pubDate></item><item><title><![CDATA[Reply to [Serialisierung] on Thu, 10 Jul 2003 20:22:00 GMT]]></title><description><![CDATA[<p>Naja, es sind zwei ganz normale Funktionen.<br />
Wenn es inline bleibt, dann alles in den Header, wenn es nicht inline bleibt, dann</p>
<pre><code class="language-cpp">CArchive&amp; operator&lt;&lt;(CArchive&amp; ar, CKontakt&amp; kontakt);
     CArchive&amp; operator&lt;&lt;(CArchive&amp; ar, CKontakt&amp; kontakt);
</code></pre>
<p>in den Header und</p>
<pre><code class="language-cpp">CArchive&amp; operator&lt;&lt;(CArchive&amp; ar, CKontakt&amp; kontakt)
{
kontakt.Serialize(ar);
return ar;
}
CArchive&amp; operator&gt;&gt;(CArchive&amp; ar, CKontakt&amp; kontakt)
{
kontakt.Serialize(ar);
return ar;
}
</code></pre>
<p>in die CPP Datei.</p>
<p>Die Funktion Serialize kannst Du dir selber erstellen:</p>
<pre><code class="language-cpp">void CKontakt::Serialize(CArchive&amp; ar)
{
if(ar.IsStoring())
{
// speichern
}
else
{
// laden
}
}
</code></pre>
<p>Oder wenn du den Code zum Laden/Speichern direkt in die operatoren schreibst, dann kannst du natürlich auf Serialize verzichten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/31951</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/31951</guid><dc:creator><![CDATA[tag]]></dc:creator><pubDate>Thu, 10 Jul 2003 20:22:00 GMT</pubDate></item><item><title><![CDATA[Reply to [Serialisierung] on Fri, 11 Jul 2003 00:47:00 GMT]]></title><description><![CDATA[<p>Sehe ich das also richtig wenn ich die CKontakt von CArchive ableiten sollte und<br />
dann die Funktionen operator&lt;&lt; und operator&gt;&gt; überladen soll?<br />
Oder kommen die in meinen mainDlg? Oder in CKontakt ohne die Klasse von<br />
irgendwas abzuleiten?</p>
<p>Sorry. Fragen über Fragen, aber ich verstehe deine Idee noch nicht so wirklich <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
Gruß,<br />
Khadgar</p>
]]></description><link>https://www.c-plusplus.net/forum/post/31952</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/31952</guid><dc:creator><![CDATA[Khadgar]]></dc:creator><pubDate>Fri, 11 Jul 2003 00:47:00 GMT</pubDate></item><item><title><![CDATA[Reply to [Serialisierung] on Fri, 11 Jul 2003 01:02:00 GMT]]></title><description><![CDATA[<p>Nein, nicht von CArchive ableiten. Die Operatoren mit zwei Parametern machen ja gerade sowas überflüssig! Der erste Parameter ist immer die linke Seite von &lt;&lt; (das Archiv), der zweite die rechte Seite von &gt;&gt; (der Kontakt). Der Operator macht in meinem Beispiel nun nichts anderes, als Serialize aufzurufen; man könnte natürlich die Speicherung und das Laden auch direkt in den operator schreiben, ohne Serialize <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>
<pre><code class="language-cpp">class CKontakt
{
public:
    CKontakt() : name(&quot;tag&quot;), alter(19) {}
    void Serialize(CArchive&amp; ar)
    {
        if(ar.IsStoring())
        {
            ar &lt;&lt; name &lt;&lt; alter;
        }
        else
        {
            ar &gt;&gt; name &gt;&gt; alter;
        }
    }
private:
    CString name;
    int alter;
};

CArchive&amp; operator&lt;&lt;(CArchive&amp; ar, CKontakt&amp; kontakt)
{
    kontakt.Serialize(ar);
    return ar;
}
CArchive&amp; operator&gt;&gt;(CArchive&amp; ar, CKontakt&amp; kontakt)
{
    kontakt.Serialize(ar);
    return ar;
}

void foo()
{
    CFile f(&quot;daten.dat&quot;, CFile::modeReadWrite);
    CArchive a(&amp;f, CArchive::store);

    CKontakt k1;
    CKontakt k2;

    // Zuerst operator&lt;&lt; aufrufen, welcher Serialize aufruft
    a &lt;&lt; k1;
    // Gleich Serialize aufrufen
    k2.Serialize(a);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/31953</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/31953</guid><dc:creator><![CDATA[tag]]></dc:creator><pubDate>Fri, 11 Jul 2003 01:02:00 GMT</pubDate></item><item><title><![CDATA[Reply to [Serialisierung] on Fri, 11 Jul 2003 11:42:00 GMT]]></title><description><![CDATA[<p>Ok,<br />
ich denke so langsam habe ich es <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
Ich kann das Array endlich persistent speichern *freu*</p>
<p>Vielen Dank tag!!!</p>
<p>[Edit]Mit welchem Tag muss ich das CArchive initialisieren um lesen zu können?<br />
Wie finde ich sowas in der MSDN???? [/Edit]</p>
<p>[Edit]Erledigt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> [/Edit]</p>
<p>[ Dieser Beitrag wurde am 11.07.2003 um 13:49 Uhr von <strong>Khadgar</strong> editiert. ]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/31954</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/31954</guid><dc:creator><![CDATA[Khadgar]]></dc:creator><pubDate>Fri, 11 Jul 2003 11:42:00 GMT</pubDate></item></channel></rss>