<?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[Schreiben von Objekten in Datei nur in Main möglich]]></title><description><![CDATA[<p>Hallo. Ich habe folgendes PRoblem . ICh habe eine KLass Zipper. In dieser Klasse Gibt es 2 Public Funktionen : Zip und Unzip. Wie man wohl vermuten kann werden Zip dateien erzeugt bzw. wieder entpackt. SOweit die Theorie. Als Daten nutze ich die Klasse ZipFile. INstanzen werden in der Funktion CreateZipFile erzuegt. Nun möchte ich ind er Klasse Zip eine Instanz in eine Datei schreiben und dann In Unzip wieder herauslesen. Allerdings kommt da immer eine FehlerMeldung,. Das komsche in der main funktion geht das mit dem schreiben iund lesen. Hier ist der code. weiß jemanda rat ? vieleb dank</p>
<p>main:</p>
<pre><code class="language-cpp">ZipFile zi;
	zi.SetZipFileName(&quot;Test1234&quot;);

	ofstream out(&quot;Test.dat&quot;, ios::binary);

	out.write(reinterpret_cast&lt;char*&gt;(&amp;zi), sizeof(ZipFile));

	out.close();

	ZipFile temp;

	ifstream in(&quot;Test.dat&quot;, ios::binary);

	in.read(reinterpret_cast&lt;char*&gt;(&amp;temp), sizeof(ZipFile));

	in.close();
</code></pre>
<p>zipper :</p>
<pre><code class="language-cpp">Zipper::Zipper(string filename)
{
	sZipName = filename;
}

// ===================================== //

ZipFile Zipper::CreateZipFile(string filename)
{
	ZipFile temp;
	temp.SetZipFileName(filename);

	return temp;
}

// ===================================== //

bool Zipper::Zip()
{
	ZipFile temp = CreateZipFile(&quot;1234.txt&quot;);

	ofstream out(sZipName.c_str(), ios::binary);

	out.write(reinterpret_cast&lt;char*&gt;(&amp;temp), sizeof(ZipFile));

	out.close();

	return true;
}

// ===================================== //

bool Zipper::UnZip()
{
	ZipFile temp;
	ifstream in(sZipName.c_str(), ios::binary);

	in.read(reinterpret_cast&lt;char*&gt;(&amp;temp), sizeof(ZipFile));

	in.close();

	return true;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/251635/schreiben-von-objekten-in-datei-nur-in-main-möglich</link><generator>RSS for Node</generator><lastBuildDate>Tue, 15 Sep 2026 10:08:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/251635.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 08 Oct 2009 09:08:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Schreiben von Objekten in Datei nur in Main möglich on Thu, 08 Oct 2009 09:08:46 GMT]]></title><description><![CDATA[<p>Hallo. Ich habe folgendes PRoblem . ICh habe eine KLass Zipper. In dieser Klasse Gibt es 2 Public Funktionen : Zip und Unzip. Wie man wohl vermuten kann werden Zip dateien erzeugt bzw. wieder entpackt. SOweit die Theorie. Als Daten nutze ich die Klasse ZipFile. INstanzen werden in der Funktion CreateZipFile erzuegt. Nun möchte ich ind er Klasse Zip eine Instanz in eine Datei schreiben und dann In Unzip wieder herauslesen. Allerdings kommt da immer eine FehlerMeldung,. Das komsche in der main funktion geht das mit dem schreiben iund lesen. Hier ist der code. weiß jemanda rat ? vieleb dank</p>
<p>main:</p>
<pre><code class="language-cpp">ZipFile zi;
	zi.SetZipFileName(&quot;Test1234&quot;);

	ofstream out(&quot;Test.dat&quot;, ios::binary);

	out.write(reinterpret_cast&lt;char*&gt;(&amp;zi), sizeof(ZipFile));

	out.close();

	ZipFile temp;

	ifstream in(&quot;Test.dat&quot;, ios::binary);

	in.read(reinterpret_cast&lt;char*&gt;(&amp;temp), sizeof(ZipFile));

	in.close();
</code></pre>
<p>zipper :</p>
<pre><code class="language-cpp">Zipper::Zipper(string filename)
{
	sZipName = filename;
}

// ===================================== //

ZipFile Zipper::CreateZipFile(string filename)
{
	ZipFile temp;
	temp.SetZipFileName(filename);

	return temp;
}

// ===================================== //

bool Zipper::Zip()
{
	ZipFile temp = CreateZipFile(&quot;1234.txt&quot;);

	ofstream out(sZipName.c_str(), ios::binary);

	out.write(reinterpret_cast&lt;char*&gt;(&amp;temp), sizeof(ZipFile));

	out.close();

	return true;
}

// ===================================== //

bool Zipper::UnZip()
{
	ZipFile temp;
	ifstream in(sZipName.c_str(), ios::binary);

	in.read(reinterpret_cast&lt;char*&gt;(&amp;temp), sizeof(ZipFile));

	in.close();

	return true;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1789535</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1789535</guid><dc:creator><![CDATA[dercooleauswandere]]></dc:creator><pubDate>Thu, 08 Oct 2009 09:08:46 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben von Objekten in Datei nur in Main möglich on Thu, 08 Oct 2009 09:18:59 GMT]]></title><description><![CDATA[<p>&quot;Eine Fehlermeldung&quot;</p>
<p>Zum Arzt sagst du wenn der kleine Zeh gebrochen ist: &quot;Ich bin körperlich beeinträchtigt. Behandeln sie mich&quot;</p>
<p>Ich habe keine Lust ohne GENAUE Fehlermeldung mir überhaupt den Code anzusehen und das geht vielen anderen mit Sicherheit auch so.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1789538</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1789538</guid><dc:creator><![CDATA[Doktor Topic]]></dc:creator><pubDate>Thu, 08 Oct 2009 09:18:59 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben von Objekten in Datei nur in Main möglich on Thu, 08 Oct 2009 09:25:47 GMT]]></title><description><![CDATA[<p>Eine Anmerkung: Das ist nicht die Art und Weise wie in C++ serialisiert wird.</p>
<pre><code class="language-cpp">out.write(reinterpret_cast&lt;char*&gt;(&amp;temp),...
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1789541</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1789541</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Thu, 08 Oct 2009 09:25:47 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben von Objekten in Datei nur in Main möglich on Thu, 08 Oct 2009 09:26:34 GMT]]></title><description><![CDATA[<p>Debug Assertion Failed!<br />
File : dbgheap.c<br />
Line : 1044</p>
<p>Expression _CrtIsValidHeapPointer(pUserData))</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1789542</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1789542</guid><dc:creator><![CDATA[dercooleauswandere]]></dc:creator><pubDate>Thu, 08 Oct 2009 09:26:34 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben von Objekten in Datei nur in Main möglich on Thu, 08 Oct 2009 09:34:35 GMT]]></title><description><![CDATA[<p>Okay das habe ich mir scon gedacht. Ich habe auch schon den TIpp erhalten als XML Datei die Werte abzuspeichern. Aber das ist zu groß. ICh möchte möglichst platzsparend speichern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1789545</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1789545</guid><dc:creator><![CDATA[dercooleauswandere]]></dc:creator><pubDate>Thu, 08 Oct 2009 09:34:35 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben von Objekten in Datei nur in Main möglich on Thu, 08 Oct 2009 10:28:10 GMT]]></title><description><![CDATA[<p>Anstatt so einem unportablem Gefrickel mit Binärwerten solltest du wohl besser die XML Variante wählen. Wenn du Platzprobleme hast, sind die schnell behoben, indem du die Ausgabe komprimierst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1789566</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1789566</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 08 Oct 2009 10:28:10 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben von Objekten in Datei nur in Main möglich on Thu, 08 Oct 2009 10:30:01 GMT]]></title><description><![CDATA[<p>Hallo . Genau das will ich ja selbst machen. also ich möchte mir eine zipper für files schreiben. das geht auch schon nur habe ich noch keine rechten plan wie ich die daten speichern soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1789567</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1789567</guid><dc:creator><![CDATA[dercooleauswandere]]></dc:creator><pubDate>Thu, 08 Oct 2009 10:30:01 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben von Objekten in Datei nur in Main möglich on Thu, 08 Oct 2009 11:07:22 GMT]]></title><description><![CDATA[<p>Du solltest dich mal mit C-PODs (Plain Old Data) und Objekten beschäftigen. Dein Ansatz erzeugt Objekte in einem willkürlichen Zustand und erzeugt undefiniertes Verhalten. Das folgende Beispiel verdeutlicht das:</p>
<pre><code class="language-cpp">struct MyData
{
   char*   Name;
};
</code></pre>
<p>sizeof( MyData ) liefert die Grösse der Struktur zurück, aber Name enthält nicht die eigentlichen Nutzdaten, sondern nur einen Zeiger auf einen weiteren Speicherbereich, der die Daten enthält. Wenn du den Inhalt per ofstream.write schreibst enthält die Ausgabedatei die Adresse des Speicherbereichs, an dem die Nutzdaten zum Zeitpunkt des Schreibens stehen. Beim Einlesen liest du die Adresse wieder ein, allerdings ist es Zufall, was sich an dieser Speicheradresse jetzt befindet =&gt; undefiniertes Verhalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1789586</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1789586</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Thu, 08 Oct 2009 11:07:22 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben von Objekten in Datei nur in Main möglich on Thu, 08 Oct 2009 11:48:41 GMT]]></title><description><![CDATA[<p>Was würdest du mir vorlschlagen. Also um es noch einmal auf den Punkt zu bringen. ich möchte bereits gezippte daten in eine Datei speichern. und das möglischts platz sparend,. also es bringt mir nicht viel wenn ich eine datei erzeuge , dei größer ist als das orginal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1789610</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1789610</guid><dc:creator><![CDATA[dercooleauswandere]]></dc:creator><pubDate>Thu, 08 Oct 2009 11:48:41 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben von Objekten in Datei nur in Main möglich on Thu, 08 Oct 2009 12:36:39 GMT]]></title><description><![CDATA[<p>dercooleauswandere schrieb:</p>
<blockquote>
<p>Was würdest du mir vorlschlagen. Also um es noch einmal auf den Punkt zu bringen. ich möchte bereits gezippte daten in eine Datei speichern. und das möglischts platz sparend,. also es bringt mir nicht viel wenn ich eine datei erzeuge , dei größer ist als das orginal.</p>
</blockquote>
<p>Ehrlich gesagt, klingt das alles sehr wirr und ich bin mir nicht sicher, ob ich dich verstehe. Hier mein Tipp:</p>
<p>Guck dir mal <a href="http://www.cs.unc.edu/Research/compgeom/gzstream/" rel="nofollow">gzstream</a> oder eine vergleichbare Bibliothek an. Damit kannst du wie gewohnt Streamoperatoren benutzen um deine Daten im Klartext in eine Datei zu schreiben (beispielsweise als XML). Nur mit dem Unterschied, dass die Datei hinterher nicht im Klartext da steht sondern komprimiert ist. Einlesen aus der gepackten Datei ist genauso einfach.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1789654</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1789654</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 08 Oct 2009 12:36:39 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben von Objekten in Datei nur in Main möglich on Thu, 08 Oct 2009 12:48:04 GMT]]></title><description><![CDATA[<p>Okay das ist dich schon was<br />
Brauche aber her was für windwos. gzstream ist ja nur für linux geeignet</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1789664</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1789664</guid><dc:creator><![CDATA[dercooleauswandere]]></dc:creator><pubDate>Thu, 08 Oct 2009 12:48:04 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben von Objekten in Datei nur in Main möglich on Thu, 08 Oct 2009 13:11:08 GMT]]></title><description><![CDATA[<p>dercooleauswandere schrieb:</p>
<blockquote>
<p>Okay das ist dich schon was<br />
Brauche aber her was für windwos. gzstream ist ja nur für linux geeignet</p>
</blockquote>
<p>Da das alles Standard C++ ist, sollte das eigentlich auch unter Windows kompilierbar sein. Musst halt auch die zlib einmal portieren. Ansonsten würde ich mal google empfehlen, ich kann mir nicht vorstellen, dass es sowas nicht für Windows gibt. Vielleicht auch mal nach normalem zip anstelle von gzip suchen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1789680</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1789680</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 08 Oct 2009 13:11:08 GMT</pubDate></item></channel></rss>