<?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[USHORT-Wert in Registry schreiben]]></title><description><![CDATA[<p>Ich habe ein Problem mit dem Schreiben von Zahlenwerten in die Registry. Ich beziehe mich dabei auf den Beitrag <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39373.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-39373.html</a><br />
Wenn ich jetzt</p>
<pre><code class="language-cpp">l_ErrCde=RegSetValueEx(hKey,&quot;ptAIConfig_LVDT_links.DasChan&quot;,0,REG_DWORD,(BYTE*)&amp;ptAIConfig_LVDT_links.DasChan,sizeof(DWORD));
	if (l_ErrCde!=ERROR_SUCCESS) 
	{
		AfxMessageBox(&quot;Fehler beim Schreiben in die Registry!&quot;,MB_OK |MB_ICONEXCLAMATION);
		Error=true;
	}

	l_ErrCde=RegSetValueEx(hKey,&quot;ptAIConfig_LVDT_links.DasGain&quot;,0,REG_DWORD,(BYTE*)&amp;ptAIConfig_LVDT_links.DasGain,sizeof(DWORD));
	if (l_ErrCde!=ERROR_SUCCESS) 
	{
		AfxMessageBox(&quot;Fehler beim Schreiben in die Registry!&quot;,MB_OK |MB_ICONEXCLAMATION);
		Error=true;
	}
</code></pre>
<p>schreiben will, dann wird nur der erste Wert korrekt eingetragen. Der zweite Eintrag wird zwar auch angelegt, hat aber immer den Wert 65536. Die Datenstruktur ist so definiert:</p>
<pre><code class="language-cpp">typedef struct tagPT_AIConfig
{
    USHORT      DasChan;
    USHORT      DasGain;
} PT_AIConfig, FAR * LPT_AIConfig;
</code></pre>
<p>Was mach ich da falsch? Diese Daten kommen aus dem Treiber einer Messkarte, an der noch zwei weitere Sensoren angeschlossen sind. Insgesamt will ich also 6 Werte in die Registry schreiben, bei denen immer nur die ersten richtig übertragen werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/196712/ushort-wert-in-registry-schreiben</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Apr 2026 01:25:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/196712.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 02 Nov 2007 06:57:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to USHORT-Wert in Registry schreiben on Fri, 02 Nov 2007 07:02:01 GMT]]></title><description><![CDATA[<p>Ich habe ein Problem mit dem Schreiben von Zahlenwerten in die Registry. Ich beziehe mich dabei auf den Beitrag <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39373.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-39373.html</a><br />
Wenn ich jetzt</p>
<pre><code class="language-cpp">l_ErrCde=RegSetValueEx(hKey,&quot;ptAIConfig_LVDT_links.DasChan&quot;,0,REG_DWORD,(BYTE*)&amp;ptAIConfig_LVDT_links.DasChan,sizeof(DWORD));
	if (l_ErrCde!=ERROR_SUCCESS) 
	{
		AfxMessageBox(&quot;Fehler beim Schreiben in die Registry!&quot;,MB_OK |MB_ICONEXCLAMATION);
		Error=true;
	}

	l_ErrCde=RegSetValueEx(hKey,&quot;ptAIConfig_LVDT_links.DasGain&quot;,0,REG_DWORD,(BYTE*)&amp;ptAIConfig_LVDT_links.DasGain,sizeof(DWORD));
	if (l_ErrCde!=ERROR_SUCCESS) 
	{
		AfxMessageBox(&quot;Fehler beim Schreiben in die Registry!&quot;,MB_OK |MB_ICONEXCLAMATION);
		Error=true;
	}
</code></pre>
<p>schreiben will, dann wird nur der erste Wert korrekt eingetragen. Der zweite Eintrag wird zwar auch angelegt, hat aber immer den Wert 65536. Die Datenstruktur ist so definiert:</p>
<pre><code class="language-cpp">typedef struct tagPT_AIConfig
{
    USHORT      DasChan;
    USHORT      DasGain;
} PT_AIConfig, FAR * LPT_AIConfig;
</code></pre>
<p>Was mach ich da falsch? Diese Daten kommen aus dem Treiber einer Messkarte, an der noch zwei weitere Sensoren angeschlossen sind. Insgesamt will ich also 6 Werte in die Registry schreiben, bei denen immer nur die ersten richtig übertragen werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1396191</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1396191</guid><dc:creator><![CDATA[AndyDD]]></dc:creator><pubDate>Fri, 02 Nov 2007 07:02:01 GMT</pubDate></item><item><title><![CDATA[Reply to USHORT-Wert in Registry schreiben on Fri, 02 Nov 2007 08:21:41 GMT]]></title><description><![CDATA[<p>Du musst schon einen Zeiger auf ein DWORD übergeben (DWORD: 4 Byte, USHORT: 2 Byte).<br />
Versuchs mal so:</p>
<pre><code class="language-cpp">DWORD dw = ptAIConfig_LVDT_links.DasChan;
    l_ErrCde=RegSetValueEx(hKey,&quot;ptAIConfig_LVDT_links.DasChan&quot;,0,REG_DWORD,(BYTE*)(&amp;dw),sizeof(DWORD));
    if (l_ErrCde!=ERROR_SUCCESS) 
    {
        AfxMessageBox(&quot;Fehler beim Schreiben in die Registry!&quot;,MB_OK |MB_ICONEXCLAMATION);
        Error=true;
    }

    dw = ptAIConfig_LVDT_links.DasGain;
    l_ErrCde=RegSetValueEx(hKey,&quot;ptAIConfig_LVDT_links.DasGain&quot;,0,REG_DWORD,(BYTE*)(&amp;dw),sizeof(DWORD));
    if (l_ErrCde!=ERROR_SUCCESS) 
    {
        AfxMessageBox(&quot;Fehler beim Schreiben in die Registry!&quot;,MB_OK |MB_ICONEXCLAMATION);
        Error=true;
    }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1396223</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1396223</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 02 Nov 2007 08:21:41 GMT</pubDate></item><item><title><![CDATA[Reply to USHORT-Wert in Registry schreiben on Fri, 02 Nov 2007 08:28:54 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Du musst schon einen Zeiger auf ein DWORD übergeben (DWORD: 4 Byte, USHORT: 2 Byte).</p>
</blockquote>
<p>Das ist mir schon klar. Aber warum funktionierts immer beim Schreiben des Parameters DasChan und beim Schreiben des Parameters DasGain kommt so eine utopisch große Zahl raus. Die Werte für die einzelnen Variablen bewegen sich in einem Bereich zwischen 0 und 15.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1396229</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1396229</guid><dc:creator><![CDATA[AndyDD]]></dc:creator><pubDate>Fri, 02 Nov 2007 08:28:54 GMT</pubDate></item><item><title><![CDATA[Reply to USHORT-Wert in Registry schreiben on Fri, 02 Nov 2007 08:50:54 GMT]]></title><description><![CDATA[<p>Vermutlich weil du etwas mehr Daten schreibst als eigentlich beabsichtigt - die beiden USHORT-Werte sind je 2 Byte groß, du schreibst je 4 Byte, da müssen die übrigen 2 Byte irgendwo herkommen. Hast du mal Hustbaer's Variante ausprobiert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1396245</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1396245</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 02 Nov 2007 08:50:54 GMT</pubDate></item><item><title><![CDATA[Reply to USHORT-Wert in Registry schreiben on Fri, 02 Nov 2007 09:42:22 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Vermutlich weil du etwas mehr Daten schreibst als eigentlich beabsichtigt - die beiden USHORT-Werte sind je 2 Byte groß, du schreibst je 4 Byte, da müssen die übrigen 2 Byte irgendwo herkommen. Hast du mal Hustbaer's Variante ausprobiert?</p>
</blockquote>
<p>Versteh ich trotzdem nicht ganz. In einem Fall ist</p>
<pre><code class="language-cpp">ptAIConfig_LVDT_links.DasChan=0;
ptAIConfig_LVDT_links.DasGain=0;
</code></pre>
<p>DasChan wird richtig übertragen, DasGain nicht. Ich hab das jetzt so umgestellt:</p>
<pre><code class="language-cpp">DWORD LVDT_links_Config_DasChan=(DWORD)ptAIConfig_LVDT_links.DasChan;
DWORD LVDT_links_Config_DasGain=(DWORD)ptAIConfig_LVDT_links.DasGain;
</code></pre>
<p>und das geht auch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1396268</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1396268</guid><dc:creator><![CDATA[AndyDD]]></dc:creator><pubDate>Fri, 02 Nov 2007 09:42:22 GMT</pubDate></item><item><title><![CDATA[Reply to USHORT-Wert in Registry schreiben on Fri, 02 Nov 2007 09:53:43 GMT]]></title><description><![CDATA[<p>Wie gesagt, irgnendwo müssen die beiden zusätzlichen Bytes herkommen. Um dir das mal zu verdeutlichen, der ungefähre Aufbau des Speichers:</p>
<pre><code>| 0 | 1 | 2 | 3 | 4 | 5 |
            | Chan  | Gain  | XXXXX |
erster Set: | ............. |
zweiter Set:        | ............. |
</code></pre>
<p>Im ersten Anlauf erwischst du außer den Chan-Daten auch den Gain-Anteil deiner struct (ist nicht weiter auffällig, weil du nur Nullen hast - wenn du dort etwas anderes einträgst, siehst du den Unterschied), im zweiten Anlauf erwischst du den Gain-Anteil und den Inhalt der nächsten Variablen, die hinter dem struct steht - das ist aus deiner Sicht Müll.</p>
<p>Bei der Alternativlösung - umkopieren in eine DWORD-Variable - hast du dagegen einen 4-Byte-Wert (die höherwertigen Anteile werden mit 0 aufgefüllt) und damit definiert die richtigen Daten).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1396273</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1396273</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 02 Nov 2007 09:53:43 GMT</pubDate></item><item><title><![CDATA[Reply to USHORT-Wert in Registry schreiben on Fri, 02 Nov 2007 10:09:26 GMT]]></title><description><![CDATA[<p>Danke für die Erklärung, jetzt hab ich das verstanden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1396285</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1396285</guid><dc:creator><![CDATA[AndyDD]]></dc:creator><pubDate>Fri, 02 Nov 2007 10:09:26 GMT</pubDate></item></channel></rss>