<?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[Zeiger schieben]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein char Array namens buffer, welches per fopen und fread mit einer Binärdatei gefüllt wird.<br />
Danach versuche ich aus dem buffer eine Struktur zu extrahieren in dem ich einfach BYTEs, WORDs oder DWORDs auslese. Die filelength wird beim einlesen gleich mitbestimmt.</p>
<pre><code class="language-cpp">int filelength;
void* dir = this-&gt;loadbinfile(filepath, &amp;filelength);
void* p = dir;
if(dir == NULL)
{
    //Error
}

while((char*)p &lt; (char*)dir + filelength)
{
     //do something
     DWORD ret = getDWORD(p);    //als Beispiel, es könnte auch getWORD oder getBYTE aufgerufen werden
     //do something more
}
</code></pre>
<p>die getDWORD Methode sieht so aus:</p>
<pre><code class="language-cpp">inline DWORD getDWORD(void* &amp;p)
{
     DWORD ret_val = *(DWORD*) p;
     //Zeiger weiterschieben
     return ret_val;
}
</code></pre>
<p>Und irgendwie stehe ich jetzt auf dem Schlauch, wie kann ich in der getDWORD Methode den Zeiger p 4Byte weiterschieben ?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/271437/zeiger-schieben</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 13:41:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/271437.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 28 Jul 2010 09:41:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zeiger schieben on Wed, 28 Jul 2010 09:41:15 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein char Array namens buffer, welches per fopen und fread mit einer Binärdatei gefüllt wird.<br />
Danach versuche ich aus dem buffer eine Struktur zu extrahieren in dem ich einfach BYTEs, WORDs oder DWORDs auslese. Die filelength wird beim einlesen gleich mitbestimmt.</p>
<pre><code class="language-cpp">int filelength;
void* dir = this-&gt;loadbinfile(filepath, &amp;filelength);
void* p = dir;
if(dir == NULL)
{
    //Error
}

while((char*)p &lt; (char*)dir + filelength)
{
     //do something
     DWORD ret = getDWORD(p);    //als Beispiel, es könnte auch getWORD oder getBYTE aufgerufen werden
     //do something more
}
</code></pre>
<p>die getDWORD Methode sieht so aus:</p>
<pre><code class="language-cpp">inline DWORD getDWORD(void* &amp;p)
{
     DWORD ret_val = *(DWORD*) p;
     //Zeiger weiterschieben
     return ret_val;
}
</code></pre>
<p>Und irgendwie stehe ich jetzt auf dem Schlauch, wie kann ich in der getDWORD Methode den Zeiger p 4Byte weiterschieben ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1932985</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1932985</guid><dc:creator><![CDATA[scrabbl]]></dc:creator><pubDate>Wed, 28 Jul 2010 09:41:15 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger schieben on Wed, 28 Jul 2010 09:47:25 GMT]]></title><description><![CDATA[<p>scrabbl schrieb:</p>
<blockquote>
<p>Und irgendwie stehe ich jetzt auf dem Schlauch, wie kann ich in der getDWORD Methode den Zeiger p 4Byte weiterschieben ?</p>
</blockquote>
<p>Zuerst in <code>DWORD*&amp;</code> casten (Referenz, damit das Original verändert wird) und dann inkrementieren. Ich empfehle übrigens <code>static_cast</code> . <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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1932988</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1932988</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 28 Jul 2010 09:47:25 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger schieben on Wed, 28 Jul 2010 09:47:20 GMT]]></title><description><![CDATA[<p>Indem du einfach 4 * sizeof(char) draufaddierst und den Wert in der Referenz auf den Zeiger abspeicherst. Aber ganz im Ernst, das ist echt kein C++ in diesem Sinne, das ging mit den fstreams vollkommen ohne Pointerarithmetik.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1932989</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1932989</guid><dc:creator><![CDATA[Ad aCTa]]></dc:creator><pubDate>Wed, 28 Jul 2010 09:47:20 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger schieben on Wed, 28 Jul 2010 11:08:34 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>danke für die Antworten, habs hinbekommen, schaut jetzt so aus:</p>
<pre><code class="language-cpp">p = (DWORD*)((DWORD)p + sizeof(DWORD));
</code></pre>
<p>Hab mir den fstream mal angeschaut und muss sagen das ich jetzt über ein Redesign nachdenke .. mein Problem ist wohl das ich aus tieferen Programmierebenen komme und mit Pointerschubsen vertraut bin <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 />
Was es da so alles an Objekten gibt die das alles schon fast fertig mitbringen weiß ich meistens gar nicht. Aber das sieht wirklich viel angenehmer und vorallem nachvollziehbarer aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1933037</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1933037</guid><dc:creator><![CDATA[scrabbl]]></dc:creator><pubDate>Wed, 28 Jul 2010 11:08:34 GMT</pubDate></item></channel></rss>