<?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[WORD Länge in struct]]></title><description><![CDATA[<p>Hallo<br />
Habe folgendes Problem. Ich habe eine 'struct'</p>
<pre><code>struct
{
	DWORD magic;   	//	0   4
	WORD version;   	// 	4   2
	WORD unkown;   	// 	6   2
	WORD BitFlag;   	// 	8   2 &lt;- hier sind es 32 bit statt 16
	DWORD xxxxx;      // 	10   4
}TEST;
</code></pre>
<p>--------------</p>
<p>mit</p>
<pre><code>ShowMessage(sizeof(TEST));
</code></pre>
<p>sehe ich 16.<br />
sobald die Anzahl von den hintereinander erstellten 'WORD's ungerade ist, werden trotz WORD 32 bit gelesen oder geschrieben.</p>
<pre><code>NFile-&gt;Write(&amp;TEST, sizeof(TEST));
</code></pre>
<p>kann man das umgehen ? oder warum ist das so bzw. wie sollte man es machen ?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/198018/word-länge-in-struct</link><generator>RSS for Node</generator><lastBuildDate>Tue, 18 Aug 2026 16:40:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/198018.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 17 Nov 2007 01:58:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to WORD Länge in struct on Sat, 17 Nov 2007 01:59:03 GMT]]></title><description><![CDATA[<p>Hallo<br />
Habe folgendes Problem. Ich habe eine 'struct'</p>
<pre><code>struct
{
	DWORD magic;   	//	0   4
	WORD version;   	// 	4   2
	WORD unkown;   	// 	6   2
	WORD BitFlag;   	// 	8   2 &lt;- hier sind es 32 bit statt 16
	DWORD xxxxx;      // 	10   4
}TEST;
</code></pre>
<p>--------------</p>
<p>mit</p>
<pre><code>ShowMessage(sizeof(TEST));
</code></pre>
<p>sehe ich 16.<br />
sobald die Anzahl von den hintereinander erstellten 'WORD's ungerade ist, werden trotz WORD 32 bit gelesen oder geschrieben.</p>
<pre><code>NFile-&gt;Write(&amp;TEST, sizeof(TEST));
</code></pre>
<p>kann man das umgehen ? oder warum ist das so bzw. wie sollte man es machen ?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1404768</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1404768</guid><dc:creator><![CDATA[OldMan00]]></dc:creator><pubDate>Sat, 17 Nov 2007 01:59:03 GMT</pubDate></item><item><title><![CDATA[Reply to WORD Länge in struct on Sat, 17 Nov 2007 10:04:38 GMT]]></title><description><![CDATA[<p>Das ist eine Compileroptimierung, siehe &quot;Datenausrichtung&quot; unter &quot;erweiterte Compileroptionen&quot;.</p>
<p>Der Compiler ordnet die Elemente des structs so an, dass der Prozessor sie schnell laden kann.</p>
<p>Probier mal:</p>
<pre><code class="language-cpp">#pragma pack(push, 1)

struct
{
    DWORD magic;
    WORD version;
    WORD unkown;
    WORD BitFlag;
    DWORD xxxxx;
}TEST;

#pragma pack(pop)
</code></pre>
<p>und lies dir die Hilfe zu #pragma pack durch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1404822</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1404822</guid><dc:creator><![CDATA[nn]]></dc:creator><pubDate>Sat, 17 Nov 2007 10:04:38 GMT</pubDate></item><item><title><![CDATA[Reply to WORD Länge in struct on Sat, 17 Nov 2007 11:49:13 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Bist denn auf genau diese Bitstruktur angewiesen? Denn der Compiler kann bei sowas normalerweise besser einschätzen was optimierter ist. Denn um 14 Bytes zu verarbeiten braucht der Prozessor so oder so 16 Byte (4 x 32 Bit). Durch deine manuelle Zusammensetzung gewinnst du meistens nichts.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1404871</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1404871</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sat, 17 Nov 2007 11:49:13 GMT</pubDate></item><item><title><![CDATA[Reply to WORD Länge in struct on Sat, 17 Nov 2007 17:39:20 GMT]]></title><description><![CDATA[<p>danke,<br />
ja ich bin darauf angewiesen, da ich sonst alles einzeln einlesen müßte.<br />
ich hatte es erst mal so gelößt, daß ich struct teilte und einmal die Zeigerposion um 2 zurücksetzte. Meistens sind Dateien so aufgebaut daß es &quot;rund&quot; läuft und da bietet sich struct sehr gut an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1405004</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1405004</guid><dc:creator><![CDATA[OldMan00]]></dc:creator><pubDate>Sat, 17 Nov 2007 17:39:20 GMT</pubDate></item></channel></rss>