<?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[Registryeintrag mit zwei Werten lesen]]></title><description><![CDATA[<p>Hi</p>
<p>Ich bin dabei Registry Einträge auszulesen. Funktioniert bei REG_SZ und REG_MULTI_SZ werten.<br />
Hab dabei aber das Problem das ich ein DNS-Eintrag lese in dem 2 Ip-Adressen gespeichert sind. Und ich bekomme dann immer beide IPs aneinander gehängt zurück, und jetzt weiß ich nicht wie ich die zwei am besten beim einlesen trennen kann.</p>
<p>Registryeintrag mit den IPs 123.123.123.123 und 2.2.2.2:</p>
<pre><code>&quot;DNS&quot;=hex(7):\
      31,32,33,2e,31,32,33,2e,31,32,33,2e,31,32,33,00,32,2e,32,2e,32,2e,32,00,00
</code></pre>
<p>Die Zwei Ip Adressen sind durch 00(\0) getrennt.</p>
<p>Funktionsaufruf:</p>
<pre><code class="language-cpp">char * DNS_Reg = RegistryLesen(HKEY_LOCAL_MACHINE, REG_MULTI_SZ, L&quot;Comm\\DM90001\\Parms\\TcpIp&quot;, L&quot;DNS&quot;);
</code></pre>
<p>Funktion:</p>
<pre><code class="language-cpp">char * RegistryLesen(HKEY MainKey, DWORD Reg_Type, LPCWSTR Subkey, LPCWSTR Value)
{
	HKEY m_hkey = MainKey;	
	LPCWSTR lpstrKey = Subkey;	
	LPCWSTR lpstrKeyValue = Value;
	DWORD dwType = Reg_Type;	

	DWORD dwSize = MAX_PATH; 
	char value[MAX_PATH];
	RegOpenKeyEx(m_hkey,lpstrKey,0,KEY_READ, &amp;m_hkey) ;

	int i=0; 
	int iLastError=0; 
	char DaValue[MAX_PATH]=&quot;&quot;;
	char * DaValuePart;
	do 
	{ 
		LPTSTR cValueName; 
		DWORD dwValueName = 256; 
		DWORD ValueType = 0; 
		BYTE cValueData[256] = &quot;\0&quot;; 
		DWORD dwValueData = 256; 
		iLastError = RegEnumValue(m_hkey,i,cValueName,&amp;dwValueName,0,&amp;ValueType,cValueData,&amp;dwValueData); 

		if(ValueType == REG_SZ)
			printf(&quot;CVALUE: %s\r\n&quot;,cValueName);
		++i; 
	}while(iLastError!=ERROR_NO_MORE_ITEMS); 

	if (RegQueryValueEx(m_hkey, lpstrKeyValue, 0, &amp;dwType,(LPBYTE)value,&amp;dwSize)== ERROR_SUCCESS) 
	{
		for(int s=0; s&lt;(int)dwSize;s=s+1)
		{
			DaValuePart = (&quot;%s&quot;,value+s);
			//  AN DIESER STELLE MÜSSTE MAN IRGENDWIE TEILEN?
			//  if (DaValuePart == &quot;\0&quot;)
			//  	printf(&quot;Hier Teilen&quot;)
			//  geht nicht!
		}
	}
	RegCloseKey(m_hkey);
	return DaValue;
}
</code></pre>
<p>Wenn ich mir jetzt mein Rückgabewert ausgeben lasse, sieht der so aus:<br />
123.123.123.1232.2.2.2<br />
Hat mir jemand ein paar Tricks und Kniffe auf Lager die ich versuchen könnte?</p>
<p>Ein zweites Problemchen hab ich, wenn ich versuche ein REG_DWORD auszulesen, sowie:</p>
<pre><code>&quot;EnableDHCP&quot;=dword:00000000
</code></pre>
<p>Dann bekomme ich ein unlesbares Zeichen angezeigt!?</p>
<p>Gruß<br />
Thomas</p>
<p>PS: Wer wissen möchte wie diese IPs in die Registry geschrieben werden:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-189540-and-highlight-is-.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-189540-and-highlight-is-.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/190159/registryeintrag-mit-zwei-werten-lesen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Apr 2026 15:20:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/190159.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 20 Aug 2007 10:36:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Registryeintrag mit zwei Werten lesen on Mon, 20 Aug 2007 10:57:08 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>Ich bin dabei Registry Einträge auszulesen. Funktioniert bei REG_SZ und REG_MULTI_SZ werten.<br />
Hab dabei aber das Problem das ich ein DNS-Eintrag lese in dem 2 Ip-Adressen gespeichert sind. Und ich bekomme dann immer beide IPs aneinander gehängt zurück, und jetzt weiß ich nicht wie ich die zwei am besten beim einlesen trennen kann.</p>
<p>Registryeintrag mit den IPs 123.123.123.123 und 2.2.2.2:</p>
<pre><code>&quot;DNS&quot;=hex(7):\
      31,32,33,2e,31,32,33,2e,31,32,33,2e,31,32,33,00,32,2e,32,2e,32,2e,32,00,00
</code></pre>
<p>Die Zwei Ip Adressen sind durch 00(\0) getrennt.</p>
<p>Funktionsaufruf:</p>
<pre><code class="language-cpp">char * DNS_Reg = RegistryLesen(HKEY_LOCAL_MACHINE, REG_MULTI_SZ, L&quot;Comm\\DM90001\\Parms\\TcpIp&quot;, L&quot;DNS&quot;);
</code></pre>
<p>Funktion:</p>
<pre><code class="language-cpp">char * RegistryLesen(HKEY MainKey, DWORD Reg_Type, LPCWSTR Subkey, LPCWSTR Value)
{
	HKEY m_hkey = MainKey;	
	LPCWSTR lpstrKey = Subkey;	
	LPCWSTR lpstrKeyValue = Value;
	DWORD dwType = Reg_Type;	

	DWORD dwSize = MAX_PATH; 
	char value[MAX_PATH];
	RegOpenKeyEx(m_hkey,lpstrKey,0,KEY_READ, &amp;m_hkey) ;

	int i=0; 
	int iLastError=0; 
	char DaValue[MAX_PATH]=&quot;&quot;;
	char * DaValuePart;
	do 
	{ 
		LPTSTR cValueName; 
		DWORD dwValueName = 256; 
		DWORD ValueType = 0; 
		BYTE cValueData[256] = &quot;\0&quot;; 
		DWORD dwValueData = 256; 
		iLastError = RegEnumValue(m_hkey,i,cValueName,&amp;dwValueName,0,&amp;ValueType,cValueData,&amp;dwValueData); 

		if(ValueType == REG_SZ)
			printf(&quot;CVALUE: %s\r\n&quot;,cValueName);
		++i; 
	}while(iLastError!=ERROR_NO_MORE_ITEMS); 

	if (RegQueryValueEx(m_hkey, lpstrKeyValue, 0, &amp;dwType,(LPBYTE)value,&amp;dwSize)== ERROR_SUCCESS) 
	{
		for(int s=0; s&lt;(int)dwSize;s=s+1)
		{
			DaValuePart = (&quot;%s&quot;,value+s);
			//  AN DIESER STELLE MÜSSTE MAN IRGENDWIE TEILEN?
			//  if (DaValuePart == &quot;\0&quot;)
			//  	printf(&quot;Hier Teilen&quot;)
			//  geht nicht!
		}
	}
	RegCloseKey(m_hkey);
	return DaValue;
}
</code></pre>
<p>Wenn ich mir jetzt mein Rückgabewert ausgeben lasse, sieht der so aus:<br />
123.123.123.1232.2.2.2<br />
Hat mir jemand ein paar Tricks und Kniffe auf Lager die ich versuchen könnte?</p>
<p>Ein zweites Problemchen hab ich, wenn ich versuche ein REG_DWORD auszulesen, sowie:</p>
<pre><code>&quot;EnableDHCP&quot;=dword:00000000
</code></pre>
<p>Dann bekomme ich ein unlesbares Zeichen angezeigt!?</p>
<p>Gruß<br />
Thomas</p>
<p>PS: Wer wissen möchte wie diese IPs in die Registry geschrieben werden:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-189540-and-highlight-is-.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-189540-and-highlight-is-.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1348068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1348068</guid><dc:creator><![CDATA[mrkorn]]></dc:creator><pubDate>Mon, 20 Aug 2007 10:57:08 GMT</pubDate></item><item><title><![CDATA[Reply to Registryeintrag mit zwei Werten lesen on Mon, 20 Aug 2007 11:01:38 GMT]]></title><description><![CDATA[<p>Das System kann das \0 nicht darstellen, deswegen wird es bei der Ausgabe auch übersprungen - aber das bedeutet nicht, daß du es nicht gesondert betrachten könntest:<br />
for(int s=0; s&lt;(int)dwSize;s=s+1)<br />
{<br />
if(value[s]=='\0')<br />
printf(&quot;-Ende\n&quot;)<br />
else<br />
printf(&quot;%c&quot;,value[s];<br />
}[cpp](PS: Außerdem kannst du mit strlen() feststellen, wie lang der erste Eintrag ist - an Position len+1 beginnt dann der zweite Eintrag)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1348094</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1348094</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 20 Aug 2007 11:01:38 GMT</pubDate></item><item><title><![CDATA[Reply to Registryeintrag mit zwei Werten lesen on Mon, 20 Aug 2007 13:13:07 GMT]]></title><description><![CDATA[<p>So ich habs gepackt <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="😉"
    /><br />
Danke vielmals</p>
<pre><code class="language-cpp">char * RegistryLesen(HKEY MainKey, DWORD Reg_Type, LPCWSTR Subkey, LPCWSTR Value)
{
	HKEY m_hkey = MainKey;	
	LPCWSTR lpstrKey = Subkey;	
	LPCWSTR lpstrKeyValue = Value;
	DWORD dwType = Reg_Type;	

	DWORD dwSize = MAX_PATH; 
	char value[MAX_PATH];
	RegOpenKeyEx(m_hkey,lpstrKey,0,KEY_READ, &amp;m_hkey) ;

	int i=0; 
	int iLastError=0; 
	char DaValue[MAX_PATH]=&quot;&quot;;
	char DaValue2[MAX_PATH]=&quot;&quot;;
	char * DaValuePart;
	int NullCounter=0;
	int EntryCounter=0;

	do 
	{ 
		LPTSTR cValueName; 
		DWORD dwValueName = 256; 
		DWORD ValueType = 0; 
		BYTE cValueData[256] = &quot;\0&quot;; 
		DWORD dwValueData = 256; 
		iLastError = RegEnumValue(m_hkey,i,cValueName,&amp;dwValueName,0,&amp;ValueType,cValueData,&amp;dwValueData); 

		if(ValueType == REG_SZ)
			printf(&quot;CVALUE: %s\r\n&quot;,cValueName);
		++i; 
	}while(iLastError!=ERROR_NO_MORE_ITEMS); 

	if (RegQueryValueEx(m_hkey, lpstrKeyValue, 0, &amp;dwType,(LPBYTE)value,&amp;dwSize)== ERROR_SUCCESS) 
	{		
		for(int s=0; s&lt;(int)dwSize; s=s+2)
		{
			if (value[s]=='\0')
			{
				NullCounter++;
				DaValuePart = &quot;&quot;;
			}
			else
			{
				DaValuePart = (&quot;%s&quot;,value+s);
				NullCounter=0;			
			}

			if (EntryCounter==0)  //  In Wert1 schreiben
			{
				strcat(DaValue, DaValuePart);
			}
			else if (EntryCounter==1)  //  In Wert2 schreiben
			{
				strcat(DaValue2, DaValuePart);
			}

			if (NullCounter==1)
			{
				printf(&quot;HIER TEILEN!&quot;);
				NullCounter=0;
				EntryCounter++;
			}
		}
	}

	RegCloseKey(m_hkey);

	if (strlen(DaValue2)&lt;7)  //  DaValue2 ist zu kurz um eine IP zu beinhalten
		return DaValue;
	else if (strlen(DaValue2)&gt;=7)
	{
		strcat(DaValue, &quot;-&quot;);
		strcat(DaValue, DaValue2);
		return DaValue;
	}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1348256</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1348256</guid><dc:creator><![CDATA[mrkorn]]></dc:creator><pubDate>Mon, 20 Aug 2007 13:13:07 GMT</pubDate></item><item><title><![CDATA[Reply to Registryeintrag mit zwei Werten lesen on Mon, 20 Aug 2007 13:36:57 GMT]]></title><description><![CDATA[<p>Da fehlen aber noch einige Grundlagen, bevor der Programmtext halbwegs lesbar ist.</p>
<p>(btw, solche Ausdrücke wie &quot;DaValuePart = (&quot;%s&quot;,value+s);&quot; sind unsinnig - das ist identisch zu &quot;DaVAluePart = value+s;&quot;)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1348301</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1348301</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 20 Aug 2007 13:36:57 GMT</pubDate></item><item><title><![CDATA[Reply to Registryeintrag mit zwei Werten lesen on Mon, 20 Aug 2007 14:12:29 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Da fehlen aber noch einige Grundlagen, bevor der Programmtext halbwegs lesbar ist.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> Ja ich weiß, aber ich hab momentan keine Zeit um die vor Jahren &quot;eigentlich&quot; schonmal erlernten Grundlagen aufzufrischen! Geht bei mir gerade nur durch learning-by-doing...<br />
Und solange ich in der Lage bin meinen Code zu verstehen, passt das erst mal...</p>
<p>CStoll schrieb:</p>
<blockquote>
<p>(btw, solche Ausdrücke wie &quot;DaValuePart = (&quot;%s&quot;,value+s);&quot; sind unsinnig - das ist identisch zu &quot;DaVAluePart = value+s;&quot;)</p>
</blockquote>
<p>Guat da haste natürlich auch wieder mal recht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1348340</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1348340</guid><dc:creator><![CDATA[mrkorn]]></dc:creator><pubDate>Mon, 20 Aug 2007 14:12:29 GMT</pubDate></item><item><title><![CDATA[Reply to Registryeintrag mit zwei Werten lesen on Tue, 21 Aug 2007 06:33:19 GMT]]></title><description><![CDATA[<p>Moin</p>
<p>es hat sich noch ein kleines Problem aufgetan, und mit meinen mangelnden Grundlagen hab ichs noch nicht hinbekommen.<br />
Und zwar bekomme ich eine Warnung:<br />
warning C4172: returning address of local variable or temporary</p>
<p>Jetzt weiß ich nicht wie ich die Funktion umschreiben muss, damit er mir einfach ein char zurück gibt. Kann man mir noch helfen? <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>
<p>Wenn ich anfange die Funktion als &quot;char Registrylesen(...)&quot; zu schreiben, dann zieht das einen riesigen Rattenschwanz nachsich. Gibt es vielleicht eine einfachere Lösung als die ganze Funktion umzuschreiben?</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1348642</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1348642</guid><dc:creator><![CDATA[mrkorn]]></dc:creator><pubDate>Tue, 21 Aug 2007 06:33:19 GMT</pubDate></item><item><title><![CDATA[Reply to Registryeintrag mit zwei Werten lesen on Tue, 21 Aug 2007 06:44:21 GMT]]></title><description><![CDATA[<p>Wie gesagt, da fehlen Grundlagen - char ist nur ein einzelnes Zeichen (also zu klein für den kompletten Registry-Eintrag) und dein <code>char DaValue[MAX_PATH];</code> ist eine lokale Variable, die am Funktionsende wieder zerstört wird (das ist es, was die Warnung dir sagen will - du gibst einen Zeiger auf etwas zurück, was nicht (mehr) existiert).</p>
<p>Eine einfache Lösung für das Problem wäre es, den zurückzugebenden Speicher per new[] anzufordern (aber dann muß das Hauptprogramm ihn aufräumen) oder als Parameter an die Funktion zu übergeben. Noch eleganter ist es natürlich, mit CString oder std::string zu arbeiten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1348651</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1348651</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 21 Aug 2007 06:44:21 GMT</pubDate></item><item><title><![CDATA[Reply to Registryeintrag mit zwei Werten lesen on Tue, 21 Aug 2007 07:25:37 GMT]]></title><description><![CDATA[<p>jaja die grundlagen...</p>
<p>Also mit CString oder std::string hatte ich bis jetzt noch nix mit zu tun.<br />
Aber die Möglichkeit einen Parameter mit der Funktion zu übergeben hört sich interessant an.</p>
<p>Ich nehm mal an das meine Funktion dann keinen Rückgabewert mehr gibt. Ich aber beim Funktionsaufruf noch eine Variable mitgebe, die ich dann in der Funktion fülle.<br />
Etwa in diese Richtung:</p>
<pre><code class="language-cpp">void RegistryLesen(char * Rückgabewert, HKEY MainKey, DWORD Reg_Type, LPCWSTR Subkey, LPCWSTR Value)
</code></pre>
<p>Liegt ich da soweit richtig? Werds gleich mal testen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1348692</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1348692</guid><dc:creator><![CDATA[mrkorn]]></dc:creator><pubDate>Tue, 21 Aug 2007 07:25:37 GMT</pubDate></item><item><title><![CDATA[Reply to Registryeintrag mit zwei Werten lesen on Tue, 21 Aug 2007 08:38:41 GMT]]></title><description><![CDATA[<p>mrkorn schrieb:</p>
<blockquote>
<p>jaja die grundlagen...</p>
<p>Also mit CString oder std::string hatte ich bis jetzt noch nix mit zu tun.<br />
Aber die Möglichkeit einen Parameter mit der Funktion zu übergeben hört sich interessant an.</p>
</blockquote>
<p>Die Lösung dazu ist eigentlich ganz einfach - du änderst den Rückgabetyp der Funktion auf CString und lässt den Rest so, wie er ist (im nächsten Schritt wäre es vielleicht hilfreich, die ganzen &lt;cstring&gt;-Funktionen durch Operator-Aufrufe zu ersetzen).</p>
<blockquote>
<p>Ich nehm mal an das meine Funktion dann keinen Rückgabewert mehr gibt. Ich aber beim Funktionsaufruf noch eine Variable mitgebe, die ich dann in der Funktion fülle.<br />
Etwa in diese Richtung:</p>
<pre><code class="language-cpp">void RegistryLesen(char * Rückgabewert, HKEY MainKey, DWORD Reg_Type, LPCWSTR Subkey, LPCWSTR Value)
</code></pre>
<p>Liegt ich da soweit richtig? Werds gleich mal testen...</p>
</blockquote>
<p>Ja, das sieht gut aus (eventuell sollte das Hauptprogramm auch noch dazusagen, wieviel Platz hinter &quot;Rückgabewert&quot; tatsächlich zur Verfügung steht). Allerdings mußt du nicht unbedingt void zurückgeben, sondern kannst die Rückgabe auch für Fehler- und Statuswerte oder z.B. die Länge des verfügbaren Strings nutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1348754</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1348754</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 21 Aug 2007 08:38:41 GMT</pubDate></item><item><title><![CDATA[Reply to Registryeintrag mit zwei Werten lesen on Tue, 21 Aug 2007 09:11:27 GMT]]></title><description><![CDATA[<p>Also ich hab da mal ein kleines Beispiel für CSrings aus dem Internet versucht:<br />
CString gray(&quot;Gray&quot;);<br />
CString cat(&quot;Cat&quot;);<br />
CString graycat = gray + cat;</p>
<p>Bringt mir einige Fehler:<br />
error C2065: 'CString' : undeclared identifier<br />
error C2146: syntax error : missing ';' before identifier 'gray'<br />
error C2065: 'gray' : undeclared identifier<br />
error C2146: syntax error : missing ';' before identifier 'cat'<br />
error C2065: 'cat' : undeclared identifier<br />
error C2146: syntax error : missing ';' before identifier 'graycat'<br />
error C2065: 'graycat' : undeclared identifier</p>
<p>Muss ich dafür noch eine bestimmte Headerdatei includen? (hab auf einigen Seiten geschaut, und keiner gibt ne Headerdatei an)</p>
<p>--------------------------------------------------</p>
<p>Wenn ich die Funktion so wie sie beim letzten post war aufrufe, dann muss ich als ersten Parameter auch wieder eine andere Variable übergeben? Habs so mal versucht:</p>
<pre><code class="language-cpp">char * DNSback;
RegistryLesen(DNSback, HKEY_LOCAL_MACHINE, REG_MULTI_SZ, L&quot;Comm\\DM90001\\Parms\\TcpIp&quot;, L&quot;DNS&quot;);
printf(&quot;UEBERGEBEN DNS: %s\r\n&quot;,DNSback);
</code></pre>
<p>Kompiliert ohne Fehler, aber in meiner Ausgabe mit printf erscheint keinerlei Inhalt!?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1348780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1348780</guid><dc:creator><![CDATA[mrkorn]]></dc:creator><pubDate>Tue, 21 Aug 2007 09:11:27 GMT</pubDate></item><item><title><![CDATA[Reply to Registryeintrag mit zwei Werten lesen on Tue, 21 Aug 2007 09:24:42 GMT]]></title><description><![CDATA[<p>mrkorn schrieb:</p>
<blockquote>
<p>Also ich hab da mal ein kleines Beispiel für CSrings aus dem Internet versucht:<br />
CString gray(&quot;Gray&quot;);<br />
CString cat(&quot;Cat&quot;);<br />
CString graycat = gray + cat;</p>
<p>Bringt mir einige Fehler:<br />
error C2065: 'CString' : undeclared identifier<br />
error C2146: syntax error : missing ';' before identifier 'gray'<br />
error C2065: 'gray' : undeclared identifier<br />
error C2146: syntax error : missing ';' before identifier 'cat'<br />
error C2065: 'cat' : undeclared identifier<br />
error C2146: syntax error : missing ';' before identifier 'graycat'<br />
error C2065: 'graycat' : undeclared identifier</p>
<p>Muss ich dafür noch eine bestimmte Headerdatei includen? (hab auf einigen Seiten geschaut, und keiner gibt ne Headerdatei an)</p>
</blockquote>
<p>Ja, da brauchst du den Header &lt;afx.h&gt; (siehe MSDN) - für std::string dann natürlich &lt;string&gt;.</p>
<blockquote>
<p>Wenn ich die Funktion so wie sie beim letzten post war aufrufe, dann muss ich als ersten Parameter auch wieder eine andere Variable übergeben? Habs so mal versucht:</p>
<pre><code class="language-cpp">char * DNSback;
RegistryLesen(DNSback, HKEY_LOCAL_MACHINE, REG_MULTI_SZ, L&quot;Comm\\DM90001\\Parms\\TcpIp&quot;, L&quot;DNS&quot;);
printf(&quot;UEBERGEBEN DNS: %s\r\n&quot;,DNSback);
</code></pre>
<p>Kompiliert ohne Fehler, aber in meiner Ausgabe mit printf erscheint keinerlei Inhalt!?</p>
</blockquote>
<p>Daß du überhaupt bis zum printf() kommst, ist ja erstaunlich - das Hauptprogramm muß natürlich auch genug Speicher bereitstellen, wo die Daten reingepackt werden können (entweder als char-Array oder über malloc()/new[]), sonst schreibst du irgendwo in den Speicher.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1348799</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1348799</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 21 Aug 2007 09:24:42 GMT</pubDate></item><item><title><![CDATA[Reply to Registryeintrag mit zwei Werten lesen on Tue, 21 Aug 2007 10:14:03 GMT]]></title><description><![CDATA[<p>Nachdem ich &lt;afx.h&gt; und &lt;string&gt; eingebaut habe, bekomme ich diese Fehler:<br />
c:\programme\windows ce tools\wce500\standardsdk_500\mfc\include\wcealt.h(245) : error C2084: function 'void *__cdecl operator new(unsigned int,void *)' already has a body<br />
c:\programme\windows ce tools\wce500\standardsdk_500\mfc\include\wcealt.h(251) : error C2084: function 'void __cdecl operator delete(void *,void *)' already has a body</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1348852</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1348852</guid><dc:creator><![CDATA[mrkorn]]></dc:creator><pubDate>Tue, 21 Aug 2007 10:14:03 GMT</pubDate></item><item><title><![CDATA[Reply to Registryeintrag mit zwei Werten lesen on Tue, 21 Aug 2007 10:25:20 GMT]]></title><description><![CDATA[<p>Das ist seltsam - was für Header verwendest du denn sonst noch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1348857</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1348857</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 21 Aug 2007 10:25:20 GMT</pubDate></item><item><title><![CDATA[Reply to Registryeintrag mit zwei Werten lesen on Tue, 21 Aug 2007 10:29:47 GMT]]></title><description><![CDATA[<p>Das sind alle:<br />
#include &lt;windows.h&gt;<br />
#include &lt;stdio.h&gt;<br />
#include &lt;winioctl.h&gt;<br />
#include &lt;stdlib.h&gt;<br />
#include &quot;httpext.h&quot;<br />
#include &quot;creg.hxx&quot;<br />
#include &lt;string&gt;<br />
#include &lt;afx.h&gt;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1348860</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1348860</guid><dc:creator><![CDATA[mrkorn]]></dc:creator><pubDate>Tue, 21 Aug 2007 10:29:47 GMT</pubDate></item></channel></rss>