<?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[ReadFile ändert eigenständig Variablen?]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hab ein seltsames Problem mit ReadFile. Ich schreibe mit WriteFile Strukturen in ein File und lese sie mit ReadFile wieder aus. Das klappt auch alles wunderbar.</p>
<p>Die Struktur heißt objectList { ... }.<br />
Zusätzlich gibt es noch einen Pointer auf diese Struktur.</p>
<pre><code>typedef struct objectList *dbOL;
</code></pre>
<p>Jetzt kurz der Code, der komische Dinge macht. <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>dbOL	oL = NULL;
DWORD	bytesRead = 0;	

SetFilePointer(hFile, NULL, NULL, FILE_BEGIN);

BOOL tempVar = TRUE;
dbOL temp = oL;

while(tempVar)
{
    struct dbObject obj;
    tempVar = ReadFile(journal, &amp;obj, blocksize, &amp;bytesRead, NULL);

    // ab hier gehts dann so weiter, dass die ausgelesene Struktur in eine List von Strukturen gehangen wird, dessen Anfang durch oL markiert wird
</code></pre>
<p>Bis zum Ausführen von ReadFile hat <em>oL</em> den Wert NULL (0x0). Nachdem ReadFile ausgeführt wurde, steht laut Debugger in oL 0xcccccccc.</p>
<p>Kann mir jemand einen Tipp geben, warum sich die Variable dort ändert? Die wird doch gar nicht verwendet.</p>
<p>Vielen Dank,<br />
Ronny</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/227592/readfile-ändert-eigenständig-variablen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Apr 2026 02:52:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/227592.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 17 Nov 2008 14:47:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to ReadFile ändert eigenständig Variablen? on Mon, 17 Nov 2008 14:47:51 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hab ein seltsames Problem mit ReadFile. Ich schreibe mit WriteFile Strukturen in ein File und lese sie mit ReadFile wieder aus. Das klappt auch alles wunderbar.</p>
<p>Die Struktur heißt objectList { ... }.<br />
Zusätzlich gibt es noch einen Pointer auf diese Struktur.</p>
<pre><code>typedef struct objectList *dbOL;
</code></pre>
<p>Jetzt kurz der Code, der komische Dinge macht. <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>dbOL	oL = NULL;
DWORD	bytesRead = 0;	

SetFilePointer(hFile, NULL, NULL, FILE_BEGIN);

BOOL tempVar = TRUE;
dbOL temp = oL;

while(tempVar)
{
    struct dbObject obj;
    tempVar = ReadFile(journal, &amp;obj, blocksize, &amp;bytesRead, NULL);

    // ab hier gehts dann so weiter, dass die ausgelesene Struktur in eine List von Strukturen gehangen wird, dessen Anfang durch oL markiert wird
</code></pre>
<p>Bis zum Ausführen von ReadFile hat <em>oL</em> den Wert NULL (0x0). Nachdem ReadFile ausgeführt wurde, steht laut Debugger in oL 0xcccccccc.</p>
<p>Kann mir jemand einen Tipp geben, warum sich die Variable dort ändert? Die wird doch gar nicht verwendet.</p>
<p>Vielen Dank,<br />
Ronny</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1616001</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1616001</guid><dc:creator><![CDATA[Ronny2]]></dc:creator><pubDate>Mon, 17 Nov 2008 14:47:51 GMT</pubDate></item><item><title><![CDATA[Reply to ReadFile ändert eigenständig Variablen? on Mon, 17 Nov 2008 20:15:48 GMT]]></title><description><![CDATA[<p>Jede Wette das blocksize größer als die Objektgröße von obj ist. Du überschreibst vermutlich den Stack.<br />
Evtl. steht in Deiner Datei auch die 0xcc Daten. Das würde bedeuten, dass Du nicht initialisierten Speichher auch geschrieben hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1616163</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1616163</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Mon, 17 Nov 2008 20:15:48 GMT</pubDate></item><item><title><![CDATA[Reply to ReadFile ändert eigenständig Variablen? on Tue, 18 Nov 2008 15:26:52 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>vielen Dank für den Hinweis. Genau das war das Problem.</p>
<p>Ich schreibe die Strukturen als Blöcke (Vielfaches von 512 Byte) auf die Festplatte. Damit lese ich natürlich mehr Bytes zurück, als die Struktur groß ist. Ich habe das korrigiert und jetzt klappt es.</p>
<p>Noch eine Frage dazu. Ist es problematisch, wenn ich eine Struktur habe die zB 490 Byte groß ist, ich aber 512 Byte in das File schreibe? So lange ich nur 490 Byte lese und dann den FilePointer jeweils auf die nächsten 512 Byte rücke, sollte das doch kein Problem sein, oder?</p>
<p>Besten Dank,<br />
MFG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1616548</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1616548</guid><dc:creator><![CDATA[Ronny2]]></dc:creator><pubDate>Tue, 18 Nov 2008 15:26:52 GMT</pubDate></item><item><title><![CDATA[Reply to ReadFile ändert eigenständig Variablen? on Tue, 18 Nov 2008 15:47:24 GMT]]></title><description><![CDATA[<p>Schon. Die Frage ist nur, was beim schreiben passiert. Es ist ja nicht gesagt, dass das 491 Byte überhaupt noch addressierbar ist!</p>
<p>Also einfach brutal 512 Bytes schreiben obwohl die Struktur nur 490 Byte sgroß ist halteich für falsch.<br />
Du müsstest den rest entsprechend selbst auffüllen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1616574</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1616574</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 18 Nov 2008 15:47:24 GMT</pubDate></item><item><title><![CDATA[Reply to ReadFile ändert eigenständig Variablen? on Wed, 19 Nov 2008 08:06:39 GMT]]></title><description><![CDATA[<p>Ok, dann werde ich den Rest einfach mit leerzeichen o.ä. füllen.</p>
<p>Besten dank.</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1616939</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1616939</guid><dc:creator><![CDATA[Ronny2]]></dc:creator><pubDate>Wed, 19 Nov 2008 08:06:39 GMT</pubDate></item><item><title><![CDATA[Reply to ReadFile ändert eigenständig Variablen? on Wed, 19 Nov 2008 19:43:33 GMT]]></title><description><![CDATA[<p>Klappt das:</p>
<pre><code>tempVar = ReadFile(journal, &amp;obj, [b]sizeof(obj)[/b], &amp;bytesRead, NULL);
</code></pre>
<p>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1617350</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1617350</guid><dc:creator><![CDATA[chezzmatazz]]></dc:creator><pubDate>Wed, 19 Nov 2008 19:43:33 GMT</pubDate></item><item><title><![CDATA[Reply to ReadFile ändert eigenständig Variablen? on Thu, 20 Nov 2008 07:14:51 GMT]]></title><description><![CDATA[<p>Ja, das klappt.</p>
<p>Wie gesagt, ich hatte ja nur noch das Problem, dass der Rest zwischen der Blocksize und dem sizeof(obj) mit &quot;Müll&quot; gefüllt wird. Jetzt schreibe ich dort Spaces rein.</p>
<p>MFG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1617469</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1617469</guid><dc:creator><![CDATA[Ronny2]]></dc:creator><pubDate>Thu, 20 Nov 2008 07:14:51 GMT</pubDate></item></channel></rss>