<?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[Funktion geht nur wenn man sie aufteilt?!]]></title><description><![CDATA[<p>Hallo, ich bin gerade dabei die adresse einer Variablen mit bekanntem Wert herauszufinden.</p>
<p>mein Problem dabei ist wenn ich die Funktion einzeln benutze geht alles wunderbar, hier mal der code dazu:</p>
<pre><code class="language-cpp">void test(HWND hwnd)
{
		HANDLE handle=leserechte_holen(hwnd);

	vector&lt;DWORD&gt; adressen;
	cout&lt;&lt;&quot;geben Sie den zu suchenden Wert ein!\n&quot;;
	int wert;
	cin&gt;&gt;wert;
	system(&quot;cls&quot;);
	cout&lt;&lt;&quot;starte Scanvorgang; dies kann 1 - 15 min dauern...\n&quot;;
	scan_process_for_value(hwnd, wert, adressen);
	cout&lt;&lt;&quot;scanvorgang abgeschlossen;\n&quot;&lt;&lt;adressen.size()&lt;&lt;&quot; Uebereinstimmungen gefunden\n\n&quot;;
#ifdef _DEBUG//im debugmode nur checken
	bool dabei=false;
	for(int a=0;a&lt;adressen.size();a++)
	{
		if( adressen[a]== (DWORD) &quot;1005194&quot; || adressen[a]== (DWORD) &quot;f568a&quot; ||adressen[a]==(DWORD)&quot;16798100&quot;)
		{
			dabei=true;
			cout&lt;&lt;&quot;Zieladresse(1005194) war dabei!&quot;;
			break;
		}
	}
	if(dabei==false)
	{
		cout&lt;&lt;&quot;Zieladresse war leider nicht dabei =( \n&quot;;
	}
#endif
	system(&quot;PAUSE&quot;);
	system(&quot;cls&quot;);
	cout&lt;&lt;&quot;Veraendern Sie den Wert der Zielvariable und geben Sie den neuen Wert ein\n&quot;;
	int neue_mienenzahl;
	cin&gt;&gt;neue_mienenzahl;
	system(&quot;cls&quot;);
	cout&lt;&lt;&quot;gefilterte adressen werden erneut gescannt\n&quot;;
	vector&lt;DWORD&gt; neue_adressen;
	rescan_adresses(handle, adressen, neue_mienenzahl, neue_adressen);
	cout&lt;&lt;&quot;Scan abgeschlossen\n&quot;;
	system(&quot;PAUSE&quot;);
	system(&quot;cls&quot;);
	cout&lt;&lt;&quot;folgende Adressen wurden gefiltert:\n\n&quot;;
	for(int a=0;a&lt;neue_adressen.size();a++)
	{
		cout&lt;&lt;hex&lt;&lt;&quot;0x&quot;&lt;&lt;neue_adressen[a]&lt;&lt;&quot;\n&quot;;
	}
#ifdef _DEBUG
	cout&lt;&lt;&quot;Größe der neuen Vektors: &quot;&lt;&lt;neue_adressen.size()&lt;&lt;endl;
#endif
	system(&quot;PAUSE&quot;);
	system(&quot;cls&quot;);
	cout&lt;&lt;&quot;sollen die werte der adressen ersetzt werden(1) der nicht (2)?\n&quot;;
	int choice;
	cin&gt;&gt;choice;
	if(choice==1)
	{
	cout&lt;&lt;&quot;durch welchen Wert soll ersetzt werden?\n&quot;;
	int wert_ersetzen;
	cin&gt;&gt;wert_ersetzen;
	system(&quot;cls&quot;);
	cout&lt;&lt;&quot;beginne ersetzen...\n&quot;;
	bool success=werte_ersetzen(handle, neue_adressen, wert_ersetzen);
	if(success==true)
	{
		cout&lt;&lt;&quot;all values successfully replaced.\n&quot;;
	}
	if(success==false)
	{
		cout&lt;&lt;&quot;error while trying to replace the values, at least one value couldn't be replaced\n&quot;;
		cout&lt;&lt;&quot;Error-code from getlasterror(): &quot;&lt;&lt;GetLastError()&lt;&lt;&quot;\n&quot;;
	}

	}
	else
	{
	}

}
</code></pre>
<p>wie gesagt, dieser Code funktioniert super <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="🙂"
    /> jetzt zu dem seltsamen problem:<br />
wenn ich obigen code in eine andere Funktion einbaue geht er nicht mehr <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>
<p>die andere Funktion sieht zB so aus:</p>
<pre><code class="language-cpp">void get_adress(HWND hwnd, bool wert_bekannt)
{
if(wert_bekannt==true)
{
//dieser Teil funktioniert deshalb ist er hier gekürzt^^
}

if(wert_bekannt==false)
{
//hier steht der Code von oben
}
}
</code></pre>
<p>das komische dabei ist dass der Code im oberen beispiel perfekt funktioniert aber sobald ich ihn wie unten in eine eigene Funktion einbaue werden völlig falsche ergebnisse geliefert, d.h. in den vektoren stehen plötzlich vollkommen falsche variablenadressen usw.</p>
<p>allerdings habe ich nichtmal ansatzweise eine Shnung woran das liegen könnte <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>(debuggen nützt da leider nichts weil die Funktion eigentlich in einer dll steht und der debugger keinen sourcecode dazu hat)</p>
<p>woran kann das liegen? eigetnlich sollte das doch funktionieren...</p>
<p>danke schonmal,<br />
andi01.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/265031/funktion-geht-nur-wenn-man-sie-aufteilt</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Jul 2026 19:09:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/265031.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 16 Apr 2010 16:51:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktion geht nur wenn man sie aufteilt?! on Fri, 16 Apr 2010 16:51:44 GMT]]></title><description><![CDATA[<p>Hallo, ich bin gerade dabei die adresse einer Variablen mit bekanntem Wert herauszufinden.</p>
<p>mein Problem dabei ist wenn ich die Funktion einzeln benutze geht alles wunderbar, hier mal der code dazu:</p>
<pre><code class="language-cpp">void test(HWND hwnd)
{
		HANDLE handle=leserechte_holen(hwnd);

	vector&lt;DWORD&gt; adressen;
	cout&lt;&lt;&quot;geben Sie den zu suchenden Wert ein!\n&quot;;
	int wert;
	cin&gt;&gt;wert;
	system(&quot;cls&quot;);
	cout&lt;&lt;&quot;starte Scanvorgang; dies kann 1 - 15 min dauern...\n&quot;;
	scan_process_for_value(hwnd, wert, adressen);
	cout&lt;&lt;&quot;scanvorgang abgeschlossen;\n&quot;&lt;&lt;adressen.size()&lt;&lt;&quot; Uebereinstimmungen gefunden\n\n&quot;;
#ifdef _DEBUG//im debugmode nur checken
	bool dabei=false;
	for(int a=0;a&lt;adressen.size();a++)
	{
		if( adressen[a]== (DWORD) &quot;1005194&quot; || adressen[a]== (DWORD) &quot;f568a&quot; ||adressen[a]==(DWORD)&quot;16798100&quot;)
		{
			dabei=true;
			cout&lt;&lt;&quot;Zieladresse(1005194) war dabei!&quot;;
			break;
		}
	}
	if(dabei==false)
	{
		cout&lt;&lt;&quot;Zieladresse war leider nicht dabei =( \n&quot;;
	}
#endif
	system(&quot;PAUSE&quot;);
	system(&quot;cls&quot;);
	cout&lt;&lt;&quot;Veraendern Sie den Wert der Zielvariable und geben Sie den neuen Wert ein\n&quot;;
	int neue_mienenzahl;
	cin&gt;&gt;neue_mienenzahl;
	system(&quot;cls&quot;);
	cout&lt;&lt;&quot;gefilterte adressen werden erneut gescannt\n&quot;;
	vector&lt;DWORD&gt; neue_adressen;
	rescan_adresses(handle, adressen, neue_mienenzahl, neue_adressen);
	cout&lt;&lt;&quot;Scan abgeschlossen\n&quot;;
	system(&quot;PAUSE&quot;);
	system(&quot;cls&quot;);
	cout&lt;&lt;&quot;folgende Adressen wurden gefiltert:\n\n&quot;;
	for(int a=0;a&lt;neue_adressen.size();a++)
	{
		cout&lt;&lt;hex&lt;&lt;&quot;0x&quot;&lt;&lt;neue_adressen[a]&lt;&lt;&quot;\n&quot;;
	}
#ifdef _DEBUG
	cout&lt;&lt;&quot;Größe der neuen Vektors: &quot;&lt;&lt;neue_adressen.size()&lt;&lt;endl;
#endif
	system(&quot;PAUSE&quot;);
	system(&quot;cls&quot;);
	cout&lt;&lt;&quot;sollen die werte der adressen ersetzt werden(1) der nicht (2)?\n&quot;;
	int choice;
	cin&gt;&gt;choice;
	if(choice==1)
	{
	cout&lt;&lt;&quot;durch welchen Wert soll ersetzt werden?\n&quot;;
	int wert_ersetzen;
	cin&gt;&gt;wert_ersetzen;
	system(&quot;cls&quot;);
	cout&lt;&lt;&quot;beginne ersetzen...\n&quot;;
	bool success=werte_ersetzen(handle, neue_adressen, wert_ersetzen);
	if(success==true)
	{
		cout&lt;&lt;&quot;all values successfully replaced.\n&quot;;
	}
	if(success==false)
	{
		cout&lt;&lt;&quot;error while trying to replace the values, at least one value couldn't be replaced\n&quot;;
		cout&lt;&lt;&quot;Error-code from getlasterror(): &quot;&lt;&lt;GetLastError()&lt;&lt;&quot;\n&quot;;
	}

	}
	else
	{
	}

}
</code></pre>
<p>wie gesagt, dieser Code funktioniert super <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="🙂"
    /> jetzt zu dem seltsamen problem:<br />
wenn ich obigen code in eine andere Funktion einbaue geht er nicht mehr <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>
<p>die andere Funktion sieht zB so aus:</p>
<pre><code class="language-cpp">void get_adress(HWND hwnd, bool wert_bekannt)
{
if(wert_bekannt==true)
{
//dieser Teil funktioniert deshalb ist er hier gekürzt^^
}

if(wert_bekannt==false)
{
//hier steht der Code von oben
}
}
</code></pre>
<p>das komische dabei ist dass der Code im oberen beispiel perfekt funktioniert aber sobald ich ihn wie unten in eine eigene Funktion einbaue werden völlig falsche ergebnisse geliefert, d.h. in den vektoren stehen plötzlich vollkommen falsche variablenadressen usw.</p>
<p>allerdings habe ich nichtmal ansatzweise eine Shnung woran das liegen könnte <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>(debuggen nützt da leider nichts weil die Funktion eigentlich in einer dll steht und der debugger keinen sourcecode dazu hat)</p>
<p>woran kann das liegen? eigetnlich sollte das doch funktionieren...</p>
<p>danke schonmal,<br />
andi01.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1883948</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1883948</guid><dc:creator><![CDATA[andi01]]></dc:creator><pubDate>Fri, 16 Apr 2010 16:51:44 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion geht nur wenn man sie aufteilt?! on Fri, 16 Apr 2010 17:52:14 GMT]]></title><description><![CDATA[<p>Es ist unwahrscheinlich, dass du damit Hilfe bekommst. Du solltest das Ganze auf ein leserliches Beispiel reduzieren, so klein wie möglich, aber der Fehler muss reproduzierbar sein.</p>
<p>Dass der Debugger keinen Sourcecode findet, ist nur eine Einstellungssache. Im Modulfenster vom Visual Studio-Debugger kann man mit Rechtsklick auf die DLL Symbole nachladen, dann wird ggf. nach dem Verzeichnis mit dem Quellcode gefragt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1883978</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1883978</guid><dc:creator><![CDATA[Nukularfüsiker]]></dc:creator><pubDate>Fri, 16 Apr 2010 17:52:14 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion geht nur wenn man sie aufteilt?! on Fri, 16 Apr 2010 19:16:56 GMT]]></title><description><![CDATA[<p>Wie wärs damit?</p>
<pre><code class="language-cpp">void get_adress(HWND hwnd, bool wert_bekannt)
{
if(wert_bekannt==true)
{
//dieser Teil funktioniert deshalb ist er hier gekürzt^^
}

if(wert_bekannt==false)
{
void test(hwnd);
}
}
</code></pre>
<p>Und wie Nukularfüsiker schon sagte, mehr Struktur und weniger alles in eine Funktion packen hilft.<br />
Der Grund könnte sein, dass er mit lokalen und globalen Variablen durcheinander kommt.</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">int i = 5;
int bla(){
    cout &lt;&lt; i;
}

int main(){
    int i = 7;
    bla(); //ergibt 5
    //bla reinkopiert:
    cout &lt;&lt; i; //ergibt 7
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1884025</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1884025</guid><dc:creator><![CDATA[nwp2]]></dc:creator><pubDate>Fri, 16 Apr 2010 19:16:56 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion geht nur wenn man sie aufteilt?! on Sat, 17 Apr 2010 12:27:33 GMT]]></title><description><![CDATA[<blockquote>
<p>Dass der Debugger keinen Sourcecode findet, ist nur eine Einstellungssache. Im Modulfenster vom Visual Studio-Debugger kann man mit Rechtsklick auf die DLL Symbole nachladen, dann wird ggf. nach dem Verzeichnis mit dem Quellcode gefragt.</p>
</blockquote>
<p>das wäre schonmal ein ansatz, so kann ich den fehler wenigstens mal effektiv suchen^^ nur wo muss man das bei MS Visual C++ 2008 EE eisntellen? wie komme ich in dieses sog. &quot;Modulfenster&quot;?</p>
<p>ansonsten werde ich jetzt die funktion mal stück für stück auseinander nehmen und schaun ab welchem Schritt der Fehler auftritt um das ganze auf ein kleines Codebeispiel zu reduzieren^^</p>
<p>mfg,<br />
andi01.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1884232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1884232</guid><dc:creator><![CDATA[andi01]]></dc:creator><pubDate>Sat, 17 Apr 2010 12:27:33 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion geht nur wenn man sie aufteilt?! on Sat, 17 Apr 2010 17:15:57 GMT]]></title><description><![CDATA[<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="😕"
    /> LOL ich habe jetzt meine Funktion stück für stück auseinender genommen und die vermeindliche Fehlerursache gefunden: <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>
<p>so hatte ich es bisher und es ging nicht:</p>
<pre><code class="language-cpp">void get_adress(HWND hwnd, bool wert_bekannt)
{

AllocConsole();//falls die Funktion nicht in einer Konsolenanwendung läuft

if(wert_bekannt==true)
{
//do something
}

else
{
//do something else
}
}
</code></pre>
<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="😕"
    /> jetzt habe ich einfach AllocConsole weggelassen und alles funktioniert perfekt <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>
<p>kann mir bitte mal jemand erklären warum AllocConsole() dafür verantwortlich ist dass in meinen Vektoren völlig falsche Werte landen und auch sonst so ziemlich alles in der Funktion schief ging?</p>
<p>edit: für das problem mit dem debuggen habe ich jetzt eine Lösung gefunden <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>für alle die dasselbe Problem haben:</p>
<p>unter Projekteigenschaften -&gt; Konfigurationseigenschaften -&gt; Linker -&gt; Debugging -&gt; Debuginfo generieren: Ja und unter &quot;Debugfähige Assembly&quot; &quot;Problemnachverfolgung zur Laufzeit ...&quot; einstellen . Danach natürlich die dll neu kompilieren.</p>
<p>mfg,<br />
andi01.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1884246</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1884246</guid><dc:creator><![CDATA[andi01]]></dc:creator><pubDate>Sat, 17 Apr 2010 17:15:57 GMT</pubDate></item></channel></rss>