<?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[RegSetValue() Problem mit dem Zeichensatz]]></title><description><![CDATA[<p>Hey,</p>
<p>habe es nun fast hinbekommen, in die Windows Registry zu schreiben, jedoch werden da lustigerweise, statt des erwarteten Textes, chinesische Zeichen gespeichert.</p>
<p>Der Code:</p>
<pre><code>HKEY key;
	char username[24] = &quot;Mr.Reese&quot;;
	if(RegOpenKey(HKEY_CURRENT_USER, TEXT(&quot;Software\\SAMP&quot;), &amp;key) != ERROR_SUCCESS){
		this-&gt;label1-&gt;Text = &quot;Error&quot;;
                RegCloseKey(key);
	}

	if (RegSetValueEx(key, TEXT(&quot;PlayerName&quot;), 0, REG_SZ, (LPBYTE)username, strlen(username)*sizeof(char)) != ERROR_SUCCESS){
	   this-&gt;label1-&gt;Text = &quot;Error2&quot;;
	   RegCloseKey(key);
	}else{
	   this-&gt;label1-&gt;Text = &quot;Success&quot;;
           RegCloseKey(key);
	}
</code></pre>
<p>In der Registry sieht es dann wie folgt aus:</p>
<p><a href="http://img5.fotos-hochladen.net/uploads/unbenannth4lbekfimv.png" rel="nofollow">http://img5.fotos-hochladen.net/uploads/unbenannth4lbekfimv.png</a></p>
<p>Wo liegt der Fehler? Danke im Voraus.</p>
<p>Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/326696/regsetvalue-problem-mit-dem-zeichensatz</link><generator>RSS for Node</generator><lastBuildDate>Fri, 10 Jul 2026 17:40:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/326696.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 01 Jul 2014 18:16:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to RegSetValue() Problem mit dem Zeichensatz on Tue, 01 Jul 2014 18:16:50 GMT]]></title><description><![CDATA[<p>Hey,</p>
<p>habe es nun fast hinbekommen, in die Windows Registry zu schreiben, jedoch werden da lustigerweise, statt des erwarteten Textes, chinesische Zeichen gespeichert.</p>
<p>Der Code:</p>
<pre><code>HKEY key;
	char username[24] = &quot;Mr.Reese&quot;;
	if(RegOpenKey(HKEY_CURRENT_USER, TEXT(&quot;Software\\SAMP&quot;), &amp;key) != ERROR_SUCCESS){
		this-&gt;label1-&gt;Text = &quot;Error&quot;;
                RegCloseKey(key);
	}

	if (RegSetValueEx(key, TEXT(&quot;PlayerName&quot;), 0, REG_SZ, (LPBYTE)username, strlen(username)*sizeof(char)) != ERROR_SUCCESS){
	   this-&gt;label1-&gt;Text = &quot;Error2&quot;;
	   RegCloseKey(key);
	}else{
	   this-&gt;label1-&gt;Text = &quot;Success&quot;;
           RegCloseKey(key);
	}
</code></pre>
<p>In der Registry sieht es dann wie folgt aus:</p>
<p><a href="http://img5.fotos-hochladen.net/uploads/unbenannth4lbekfimv.png" rel="nofollow">http://img5.fotos-hochladen.net/uploads/unbenannth4lbekfimv.png</a></p>
<p>Wo liegt der Fehler? Danke im Voraus.</p>
<p>Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2406552</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2406552</guid><dc:creator><![CDATA[Mr.Reese]]></dc:creator><pubDate>Tue, 01 Jul 2014 18:16:50 GMT</pubDate></item><item><title><![CDATA[Reply to RegSetValue() Problem mit dem Zeichensatz on Tue, 01 Jul 2014 18:42:55 GMT]]></title><description><![CDATA[<p>Die Längenangabe ( <code>strlen(username)*sizeof(char)</code> ) ist schon mal definitiv falsch.</p>
<p>Deklariere doch einfach mal <code>username</code> so:</p>
<pre><code>char username[] = &quot;Mr.Reese&quot;; // Länge wird automatisch erkannt - hier sollte sie 9 sein
</code></pre>
<p>Dann ist die Längenangabe nur noch <code>sizeof(username)</code> (inklusive Nullterminierung).</p>
<p>Und außerdem brauchst du gar nicht nach <code>LPBYTE</code> casten - die Funktion erwartet <code>BYTE const*</code> (welches laut Doku effektiv <code>unsigned char const*</code> entspricht).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2406555</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2406555</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Tue, 01 Jul 2014 18:42:55 GMT</pubDate></item><item><title><![CDATA[Reply to RegSetValue() Problem mit dem Zeichensatz on Tue, 01 Jul 2014 18:40:21 GMT]]></title><description><![CDATA[<p>Dein Projekt verwendet Unicode.<br />
Key und Value hast Du mit Hilfe von <code>TEXT()</code> als Unicode (16 Bit) an die Funktionen <code>RegOpenKey()</code> und <code>RegSetValueEx()</code> weitergereicht. Die Daten ( <code>&quot;Mr.Reese&quot;</code> ) gibst Du aber als <code>char</code> (8 Bit) an <code>RegSetValueEx()</code> . Die acht Zeichen &quot;Mr.Reese&quot; werden dann als vier Unicodezeichen interpretiert, die sich zufällig gerade gerade im chinesische bewegen (&quot;Mr&quot; == 0x724d == 牍).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2406556</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2406556</guid><dc:creator><![CDATA[Caligulaminus]]></dc:creator><pubDate>Tue, 01 Jul 2014 18:40:21 GMT</pubDate></item><item><title><![CDATA[Reply to RegSetValue() Problem mit dem Zeichensatz on Tue, 01 Jul 2014 20:03:30 GMT]]></title><description><![CDATA[<blockquote>
<p>Dein Projekt verwendet Unicode.</p>
</blockquote>
<p>Habe ich auch direkt vermutet, die Doku sagt jedoch</p>
<blockquote>
<p>REG_SZ: [...] This will be either a Unicode or an ANSI string, depending on whether you use the Unicode or ANSI <strong>functions</strong>.</p>
</blockquote>
<p>Und von welchen Funktionen ist hier die Rede?</p>
<p>Edit: Ach, es ist einerseits dieselbe Funktion, nur mit verschiedenen Versionen - abhängig vom <code>UNICODE</code> -Makro. Und andererseits <code>RegSetValueExA</code> / <code>RegSetValueExW</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2406557</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2406557</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Tue, 01 Jul 2014 20:03:30 GMT</pubDate></item><item><title><![CDATA[Reply to RegSetValue() Problem mit dem Zeichensatz on Tue, 01 Jul 2014 19:53:05 GMT]]></title><description><![CDATA[<p>Darum verwendet man *niemals* die Makro-abhaengigen Funktionen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2406566</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2406566</guid><dc:creator><![CDATA[Kellerautomat]]></dc:creator><pubDate>Tue, 01 Jul 2014 19:53:05 GMT</pubDate></item><item><title><![CDATA[Reply to RegSetValue() Problem mit dem Zeichensatz on Tue, 01 Jul 2014 21:48:30 GMT]]></title><description><![CDATA[<p>Caligulaminus schrieb:</p>
<blockquote>
<p>Dein Projekt verwendet Unicode.<br />
Key und Value hast Du mit Hilfe von <code>TEXT()</code> als Unicode (16 Bit) an die Funktionen <code>RegOpenKey()</code> und <code>RegSetValueEx()</code> weitergereicht. Die Daten ( <code>&quot;Mr.Reese&quot;</code> ) gibst Du aber als <code>char</code> (8 Bit) an <code>RegSetValueEx()</code> . Die acht Zeichen &quot;Mr.Reese&quot; werden dann als vier Unicodezeichen interpretiert, die sich zufällig gerade gerade im chinesische bewegen (&quot;Mr&quot; == 0x724d == 牍).</p>
</blockquote>
<p>Gut, das klingt soweit aus theoretischer Sich einleuchtend.</p>
<p>Arcoth schrieb:</p>
<blockquote>
<p>Die Längenangabe ( <code>strlen(username)*sizeof(char)</code> ) ist schon mal definitiv falsch.</p>
<p>Deklariere doch einfach mal <code>username</code> so:</p>
<pre><code>char username[] = &quot;Mr.Reese&quot;; // Länge wird automatisch erkannt - hier sollte sie 9 sein
</code></pre>
<p>Dann ist die Längenangabe nur noch <code>sizeof(username)</code> (inklusive Nullterminierung).</p>
<p>Und außerdem brauchst du gar nicht nach <code>LPBYTE</code> casten - die Funktion erwartet <code>BYTE const*</code> (welches laut Doku effektiv <code>unsigned char const*</code> entspricht).</p>
</blockquote>
<p>Habe das soweit mal angepasst, allerdings kommt es immer noch auf's Selbe hinaus.</p>
<p>Der aktuelle Code sieht nun, wie folgt aus:</p>
<pre><code>HKEY key;
	char username[] = &quot;Mr.Reese&quot;;
	if (RegOpenKey(HKEY_CURRENT_USER, TEXT(&quot;Software\\SAMP&quot;), &amp;key) != ERROR_SUCCESS){
		this-&gt;label1-&gt;Text = &quot;Error&quot;;
		RegCloseKey(key);
	}

	if (RegSetValueEx(key, TEXT(&quot;PlayerName&quot;), 0, REG_SZ, (unsigned char*)username, sizeof(username)) != ERROR_SUCCESS){
	   this-&gt;label1-&gt;Text = &quot;Error2&quot;;
	   RegCloseKey(key);
	}else{
	   this-&gt;label1-&gt;Text = &quot;Success&quot;;
	}
</code></pre>
<p>Wo liegt noch der Hund begraben?</p>
<p>Danke schonmal.</p>
<p>Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2406597</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2406597</guid><dc:creator><![CDATA[Mr.Reese]]></dc:creator><pubDate>Tue, 01 Jul 2014 21:48:30 GMT</pubDate></item><item><title><![CDATA[Reply to RegSetValue() Problem mit dem Zeichensatz on Tue, 01 Jul 2014 23:09:12 GMT]]></title><description><![CDATA[<p>... Du verwendest nach wie vor Unicode?</p>
<p>Nimm mal statt RegSetValueEx RegSetValueExA, und schau ob es immer noch nicht klappt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2406610</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2406610</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Tue, 01 Jul 2014 23:09:12 GMT</pubDate></item><item><title><![CDATA[Reply to RegSetValue() Problem mit dem Zeichensatz on Tue, 01 Jul 2014 23:26:55 GMT]]></title><description><![CDATA[<p>Jap, das war der Fehler.<br />
Danke für alle Antworten.</p>
<p>Eine kleine Frage allerdings noch: Wofür steht der Stern bei beispielsweise</p>
<pre><code>(unsigned char*)username
</code></pre>
<p>?<br />
Habe schon herausgefunden, dass es etwas mit Zeigern zu tun hat, allerdings ist mir der Sinn noch nicht so ganz schlüssig.</p>
<p>Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2406612</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2406612</guid><dc:creator><![CDATA[Mr.Reese]]></dc:creator><pubDate>Tue, 01 Jul 2014 23:26:55 GMT</pubDate></item><item><title><![CDATA[Reply to RegSetValue() Problem mit dem Zeichensatz on Tue, 01 Jul 2014 23:28:08 GMT]]></title><description><![CDATA[<blockquote>
<p>Wofür steht der Stern bei beispielsweise [...]</p>
</blockquote>
<p>Der macht aus einem Typen A einen Zeiger auf den Typen A. Zeiger solltest du doch kennen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2406613</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2406613</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Tue, 01 Jul 2014 23:28:08 GMT</pubDate></item><item><title><![CDATA[Reply to RegSetValue() Problem mit dem Zeichensatz on Tue, 01 Jul 2014 23:47:48 GMT]]></title><description><![CDATA[<p>Danke.</p>
<p>Naja, nur aus dem Theoretischen, habe mit dem Problem hier im Thread angefangen.</p>
<p>Hatte bisher auch bei anderen Programmiersprachen, wie PHP (wobei das ganz streng genommen eine Scriptsprache ist), etc. immer die Erfahrung, dass man beim Learning by doing am Besten lernt und das wollte ich bei c++ ebenso so halten.<br />
Daher habe ich einfach mal reingestartet und mit Zeigern praktisch noch nie zu tun gehabt.</p>
<p>Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2406616</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2406616</guid><dc:creator><![CDATA[Mr.Reese]]></dc:creator><pubDate>Tue, 01 Jul 2014 23:47:48 GMT</pubDate></item><item><title><![CDATA[Reply to RegSetValue() Problem mit dem Zeichensatz on Wed, 02 Jul 2014 05:49:26 GMT]]></title><description><![CDATA[<blockquote>
<p>dass man beim Learning by doing am Besten lernt und das wollte ich bei c++ ebenso so halten.</p>
</blockquote>
<p>C++ ist dafür leider gar nicht geeignet.</p>
<p>Für Grundlagen brauchst du ein gutes Buch, das ist heutzutage praktisch unentbehrlich. In der <a href="http://www.c-plusplus.net/forum/p2267594#2267594" rel="nofollow">Linkliste für Neulinge</a> findest du unter der ersten Rubrik Bücher.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2406620</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2406620</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Wed, 02 Jul 2014 05:49:26 GMT</pubDate></item><item><title><![CDATA[Reply to RegSetValue() Problem mit dem Zeichensatz on Wed, 02 Jul 2014 08:57:08 GMT]]></title><description><![CDATA[<p>Mr.Reese schrieb:</p>
<blockquote>
<p>Danke.</p>
<p>Naja, nur aus dem Theoretischen, habe mit dem Problem hier im Thread angefangen.</p>
<p>Hatte bisher auch bei anderen Programmiersprachen, wie PHP (wobei das ganz streng genommen eine Scriptsprache ist), etc. immer die Erfahrung, dass man beim Learning by doing am Besten lernt und das wollte ich bei c++ ebenso so halten.<br />
Daher habe ich einfach mal reingestartet und mit Zeigern praktisch noch nie zu tun gehabt.</p>
<p>Grüße</p>
</blockquote>
<p>Ich denke das ist ein Irrtum. Wie viele Lernverfahren hast Du ausprobiert und wie hast Du sie miteinander verglichen? Wie hast Du beurteilt, ob Du das gelernte wirklich gelernt hast?</p>
<p>So ein reines &quot;lerning by doing&quot; bedeutet in der Regel ein probieren bis es geht und erzeugt fürchterliche Ergebnisse. Besser ist es, aus einem guten Buch die Grundlagen zu lernen und dann in der Praxis auszuprobieren.</p>
<p>Grundlagen zu lernen ist zwar lästig aber ohne wirst Du nie wirklich durch blicken. Und mit der Zeit macht es mehr Spaß, wenn man wirklich versteht, was ab geht. Das gilt in besonderen Maß für C++. Da geht mit durchprobieren wirklich sehr wenig und ist mit der Zeit wirklich frustierend.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2406636</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2406636</guid><dc:creator><![CDATA[tntnet]]></dc:creator><pubDate>Wed, 02 Jul 2014 08:57:08 GMT</pubDate></item></channel></rss>