<?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[fwrite und fread für ein Array]]></title><description><![CDATA[<p>Hallo zusammen, kann mir bitte jemand auf die Finger schauen!? Ich versuche schon sein einiger Zeit die Funktionen zum Speichern und Laden von meinem Datentyp zu realisieren was nicht so recht zu klappen scheint.</p>
<pre><code class="language-cpp">void __fastcall TfrmLoadAndSave::btnSaveDatClick(TObject *Sender)
{
        FILE *f;
        AnsiString asFilename;
        TData myData[10];

        for(int i=0; i&lt;10; i++)
        {
                myData[i].myInt = i;

        }

        if (SaveDialog1-&gt;Execute())
        {
                asFilename = SaveDialog1-&gt;FileName;
                f = fopen(asFilename.c_str(),&quot;wb&quot;);
                for(int i=0; i&lt;sizeof(myData); i++)
                {
                        fwrite(&amp;myData[i], sizeof(TData), 1, f);
                }
               fclose(f);
        }

}
//---------------------------------------------------------------------------
void __fastcall TfrmLoadAndSave::btnLoadDatClick(TObject *Sender)
{
        FILE *f;
        AnsiString asFilename;
        TData myData[10];

        if (OpenDialog1-&gt;Execute())
        {
                asFilename = OpenDialog1-&gt;FileName;
                f = fopen(asFilename.c_str(),&quot;wb&quot;);
                for(int i=0; i&lt;sizeof(myData); i++)
                {
                        fread(&amp;myData[i], sizeof(TData), 1, f);
                }
                fclose(f);
        }

}
</code></pre>
<p>Mir geht es speziell darum, wie ich ein ganzes Array voller Werte in der Datei ablegen kann und später die Datei wieder in ein Array einlesen kann.</p>
<p>MfG<br />
coder24h</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/147176/fwrite-und-fread-für-ein-array</link><generator>RSS for Node</generator><lastBuildDate>Thu, 06 Aug 2026 01:16:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/147176.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 14 May 2006 22:01:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to fwrite und fread für ein Array on Sun, 14 May 2006 22:01:05 GMT]]></title><description><![CDATA[<p>Hallo zusammen, kann mir bitte jemand auf die Finger schauen!? Ich versuche schon sein einiger Zeit die Funktionen zum Speichern und Laden von meinem Datentyp zu realisieren was nicht so recht zu klappen scheint.</p>
<pre><code class="language-cpp">void __fastcall TfrmLoadAndSave::btnSaveDatClick(TObject *Sender)
{
        FILE *f;
        AnsiString asFilename;
        TData myData[10];

        for(int i=0; i&lt;10; i++)
        {
                myData[i].myInt = i;

        }

        if (SaveDialog1-&gt;Execute())
        {
                asFilename = SaveDialog1-&gt;FileName;
                f = fopen(asFilename.c_str(),&quot;wb&quot;);
                for(int i=0; i&lt;sizeof(myData); i++)
                {
                        fwrite(&amp;myData[i], sizeof(TData), 1, f);
                }
               fclose(f);
        }

}
//---------------------------------------------------------------------------
void __fastcall TfrmLoadAndSave::btnLoadDatClick(TObject *Sender)
{
        FILE *f;
        AnsiString asFilename;
        TData myData[10];

        if (OpenDialog1-&gt;Execute())
        {
                asFilename = OpenDialog1-&gt;FileName;
                f = fopen(asFilename.c_str(),&quot;wb&quot;);
                for(int i=0; i&lt;sizeof(myData); i++)
                {
                        fread(&amp;myData[i], sizeof(TData), 1, f);
                }
                fclose(f);
        }

}
</code></pre>
<p>Mir geht es speziell darum, wie ich ein ganzes Array voller Werte in der Datei ablegen kann und später die Datei wieder in ein Array einlesen kann.</p>
<p>MfG<br />
coder24h</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1057830</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1057830</guid><dc:creator><![CDATA[coder24h]]></dc:creator><pubDate>Sun, 14 May 2006 22:01:05 GMT</pubDate></item><item><title><![CDATA[Reply to fwrite und fread für ein Array on Sun, 14 May 2006 22:20:11 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>wenn du den Builder schoin benutzt, dann nimm doch gleich <em>TStringList</em>. Wie das steht in der FAQ des Builder-Subforums unter den TOP 3.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1057834</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1057834</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sun, 14 May 2006 22:20:11 GMT</pubDate></item><item><title><![CDATA[Reply to fwrite und fread für ein Array on Mon, 15 May 2006 11:28:19 GMT]]></title><description><![CDATA[<p>Es ist mir schon klar, dass diese Funktionen nicht mehr die neuesten sind, dafür werden die von jedem c bzw. c++ Compiler unterstützt. Hat jemand einen Vorschlag was ich falsch gemacht haben könnte?<br />
*<br />
Mit freundlichen Grüßen<br />
coder34h<br />
*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1058036</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1058036</guid><dc:creator><![CDATA[coder24h]]></dc:creator><pubDate>Mon, 15 May 2006 11:28:19 GMT</pubDate></item><item><title><![CDATA[Reply to fwrite und fread für ein Array on Mon, 15 May 2006 11:33:28 GMT]]></title><description><![CDATA[<p>coder24h schrieb:</p>
<blockquote>
<p>Es ist mir schon klar, dass diese Funktionen nicht mehr die neuesten sind, dafür werden die von jedem c bzw. c++ Compiler unterstützt.</p>
</blockquote>
<p>das ist nciht von dem Compiler abhängig, sondern von der VCL.<br />
und da du die VCL sowieso schon brauchst (&quot;AnsiString&quot; &quot;TSaveDialog&quot;), kannst du doch auch gleich die vorzüge davon geniessen. -&gt; siehe akaris posting</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1058037</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1058037</guid><dc:creator><![CDATA[BigNeal]]></dc:creator><pubDate>Mon, 15 May 2006 11:33:28 GMT</pubDate></item><item><title><![CDATA[Reply to fwrite und fread für ein Array on Mon, 15 May 2006 11:36:09 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>es spielt doch keine Rolle ob ein kleiner Teil deines Codes von jedem C und C++ Compiler verstanden wird, wenn du das ganze in eine Compiler-abhängige Klassenbibliothek (die VCL des Builders) einbettest und damit das ganze Programm eh nur mit dem Builder übersetzt werden kann.<br />
Wenn du aber standard-konforme Programme schreiben willst, dann erstelle im Builder ein Konsolenprojekt und verwende <em>std::fstream</em>. Dazu findest du im C++FAQ einen Thread namens <em>Dateien und Ströme</em>.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1058042</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1058042</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 15 May 2006 11:36:09 GMT</pubDate></item><item><title><![CDATA[Reply to fwrite und fread für ein Array on Mon, 15 May 2006 12:33:23 GMT]]></title><description><![CDATA[<p>Ein Fehler ist in der For-Schleife:</p>
<pre><code class="language-cpp">for(int i=0; i&lt;sizeof(myData); i++)
</code></pre>
<p>sizeof(myData) liefert nicht die Anzahl der Feldelemente sondern die Größe des vom Feld belegten Speicherplatzes, also sizeof(TData)*Feldgröße. Du willst sicherlich über sizeof(myData)/sizeof(TData) iterieren.</p>
<p>Ein weiterer möglicher Fehler ist, daß der Typ TData Zeiger enthält. Falls dem so ist, werden die Zeiger gespeichert aber nicht die Daten.</p>
<p>Falls dein Feld nicht immer gleich lang sein sollte, muß beim Laden abgefragt werden, ob die Datei lang genug ist, sonst wird irgendwann ein Fehler durch Lesen hinterm Dateiende ausgelöst werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1058097</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1058097</guid><dc:creator><![CDATA[Morris Szyslak]]></dc:creator><pubDate>Mon, 15 May 2006 12:33:23 GMT</pubDate></item><item><title><![CDATA[Reply to fwrite und fread für ein Array on Mon, 15 May 2006 13:21:17 GMT]]></title><description><![CDATA[<p>Ich würde, wie von akari schon gesagt hier lieber mit Streams arbeiten. Die kennt auch jeder C++-Compiler. Desweiteren wäre es gut, die Anzahl der Array-Element mit abzuspeichern (als Erstes). Das macht alles etwas flexibler und weniger fehleranfällig.<br />
Noch besser wäre es, der struct passende read/write-Funktionen für Streams zu geben. Mehr könnte man erst sagen, wenn man die Deklaration von TData kennt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1058122</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1058122</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Mon, 15 May 2006 13:21:17 GMT</pubDate></item><item><title><![CDATA[Reply to fwrite und fread für ein Array on Mon, 15 May 2006 13:34:52 GMT]]></title><description><![CDATA[<p>Ich Danke für Ihre Hilfsbereitschaft!<br />
TData ist ein struct der keine Zeiger in sich trägt. Dank <strong>Morris Szyslak</strong> habe ich noch mal die Funktionen verändert und man sieht schon mal, dass etwas in die Datei geschrieben wird! Beim auslesen bekomme ich aber nicht die richtigen Werte raus.</p>
<pre><code class="language-cpp">struct TData
{
   int myInt;
};

void __fastcall TForm1::Button1Click(TObject *Sender)
{
        FILE *f;
        AnsiString asFilename;
        TData myData[10];

        for(int i=0; i&lt;10; i++)
        {
                myData[i].myInt = i;

        }

        if (SaveDialog1-&gt;Execute())
        {
                asFilename = SaveDialog1-&gt;FileName;
                f = fopen(asFilename.c_str(),&quot;wb&quot;);
                for(int i=0; i&lt;sizeof(myData)/sizeof(TData); i++)
                {
                        fwrite(&amp;myData[i], sizeof(TData), 1, f);
                }
               fclose(f);
        }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
        FILE *f;
        AnsiString asFilename;
        TData myData[10];

        if (OpenDialog1-&gt;Execute())
        {
                asFilename = OpenDialog1-&gt;FileName;
                f = fopen(asFilename.c_str(),&quot;wb&quot;);
                for(int i=0; i&lt;sizeof(myData)/sizeof(TData); i++)
                {
                        fread(&amp;myData[i], sizeof(TData), 1, f);
                }
                fclose(f);
        }

        for(int i=0; i&lt;10; i++)
        {
                ShowMessage(IntToStr(myData[i].myInt));

        }

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1058138</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1058138</guid><dc:creator><![CDATA[coder24h]]></dc:creator><pubDate>Mon, 15 May 2006 13:34:52 GMT</pubDate></item><item><title><![CDATA[Reply to fwrite und fread für ein Array on Mon, 15 May 2006 13:44:05 GMT]]></title><description><![CDATA[<p>Müßte das Öffnen zum Lesen nicht so heißen</p>
<pre><code class="language-cpp">f = fopen(asFilename.c_str(),&quot;rb&quot;);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1058148</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1058148</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Mon, 15 May 2006 13:44:05 GMT</pubDate></item><item><title><![CDATA[Reply to fwrite und fread für ein Array on Mon, 15 May 2006 13:52:00 GMT]]></title><description><![CDATA[<p>Danke <strong>Braunstein</strong>, das hat mein Problem jetzt eliminiert!</p>
<p>Ich habe einen schönen Link hier gefunden, der zu dem Thema gut passen würde:</p>
<p><a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39351.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-39351.html</a></p>
<p>Noch mal vielen Dank!<br />
coder24h</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1058157</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1058157</guid><dc:creator><![CDATA[coder24h]]></dc:creator><pubDate>Mon, 15 May 2006 13:52:00 GMT</pubDate></item></channel></rss>