<?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[Logisches Problem?]]></title><description><![CDATA[<p>Wieso kehrt meine Funktion mit false zurück, obwohl (100 mal geprüft) (DWORD) ValidCompilation &gt; (DWORD) TrampolineProc &gt; (DWORD) NewWindowProc ???<br />
Was bedeutet das @ILT+x ? Würde der Compieler den waren Wert von NewWindowProc / TrampolineProc ins ecx Register schreiben, würde es funktionieren !?</p>
<p>Debugger:</p>
<p>95: //Überprüft die Kompilierung<br />
96: bool ValidCompilation()<br />
97: {<br />
100014F0 55 push ebp<br />
100014F1 8B EC mov ebp,esp<br />
100014F3 83 EC 40 sub esp,40h<br />
100014F6 53 push ebx<br />
100014F7 56 push esi<br />
100014F8 57 push edi<br />
100014F9 8D 7D C0 lea edi,[ebp-40h]<br />
100014FC B9 10 00 00 00 mov ecx,10h<br />
10001501 B8 CC CC CC CC mov eax,0CCCCCCCCh<br />
10001506 F3 AB rep stos dword ptr [edi]<br />
98: if(((DWORD) ValidCompilation &gt; (DWORD) TrampolineProc)<br />
99: &amp;&amp; ((DWORD) TrampolineProc &gt; (DWORD) NewWindowProc))<br />
10001508 B8 19 10 00 10 mov eax,offset @ILT+20(ValidCompilation) (10001019)<br />
1000150D 3D 05 10 00 10 cmp eax,offset @ILT+0(TrampolineProc) (10001005)<br />
10001512 76 11 jbe ValidCompilation+35h (10001525)<br />
10001514 B9 05 10 00 10 mov ecx,offset @ILT+0(TrampolineProc) (10001005)<br />
10001519 81 F9 1E 10 00 10 cmp ecx,offset @ILT+25(NewWindowProc) (1000101e)<br />
1000151F 76 04 jbe ValidCompilation+35h (10001525)<br />
100: {<br />
101: return true;<br />
10001521 B0 01 mov al,1<br />
10001523 EB 02 jmp ValidCompilation+37h (10001527)<br />
102: }<br />
103: return false;<br />
10001525 32 C0 xor al,al<br />
104: }</p>
<p>Quellcodeabschnitt:</p>
<pre><code class="language-cpp">bool ValidCompilation()
{
	if(((DWORD) ValidCompilation &gt; (DWORD) TrampolineProc)
		&amp;&amp; ((DWORD) TrampolineProc &gt; (DWORD) NewWindowProc))
	{
		return true;
	}
	return false;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/100920/logisches-problem</link><generator>RSS for Node</generator><lastBuildDate>Wed, 29 Apr 2026 02:03:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/100920.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 11 Feb 2005 12:26:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Logisches Problem? on Fri, 11 Feb 2005 12:26:59 GMT]]></title><description><![CDATA[<p>Wieso kehrt meine Funktion mit false zurück, obwohl (100 mal geprüft) (DWORD) ValidCompilation &gt; (DWORD) TrampolineProc &gt; (DWORD) NewWindowProc ???<br />
Was bedeutet das @ILT+x ? Würde der Compieler den waren Wert von NewWindowProc / TrampolineProc ins ecx Register schreiben, würde es funktionieren !?</p>
<p>Debugger:</p>
<p>95: //Überprüft die Kompilierung<br />
96: bool ValidCompilation()<br />
97: {<br />
100014F0 55 push ebp<br />
100014F1 8B EC mov ebp,esp<br />
100014F3 83 EC 40 sub esp,40h<br />
100014F6 53 push ebx<br />
100014F7 56 push esi<br />
100014F8 57 push edi<br />
100014F9 8D 7D C0 lea edi,[ebp-40h]<br />
100014FC B9 10 00 00 00 mov ecx,10h<br />
10001501 B8 CC CC CC CC mov eax,0CCCCCCCCh<br />
10001506 F3 AB rep stos dword ptr [edi]<br />
98: if(((DWORD) ValidCompilation &gt; (DWORD) TrampolineProc)<br />
99: &amp;&amp; ((DWORD) TrampolineProc &gt; (DWORD) NewWindowProc))<br />
10001508 B8 19 10 00 10 mov eax,offset @ILT+20(ValidCompilation) (10001019)<br />
1000150D 3D 05 10 00 10 cmp eax,offset @ILT+0(TrampolineProc) (10001005)<br />
10001512 76 11 jbe ValidCompilation+35h (10001525)<br />
10001514 B9 05 10 00 10 mov ecx,offset @ILT+0(TrampolineProc) (10001005)<br />
10001519 81 F9 1E 10 00 10 cmp ecx,offset @ILT+25(NewWindowProc) (1000101e)<br />
1000151F 76 04 jbe ValidCompilation+35h (10001525)<br />
100: {<br />
101: return true;<br />
10001521 B0 01 mov al,1<br />
10001523 EB 02 jmp ValidCompilation+37h (10001527)<br />
102: }<br />
103: return false;<br />
10001525 32 C0 xor al,al<br />
104: }</p>
<p>Quellcodeabschnitt:</p>
<pre><code class="language-cpp">bool ValidCompilation()
{
	if(((DWORD) ValidCompilation &gt; (DWORD) TrampolineProc)
		&amp;&amp; ((DWORD) TrampolineProc &gt; (DWORD) NewWindowProc))
	{
		return true;
	}
	return false;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/720551</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/720551</guid><dc:creator><![CDATA[DjFishbone]]></dc:creator><pubDate>Fri, 11 Feb 2005 12:26:59 GMT</pubDate></item><item><title><![CDATA[Reply to Logisches Problem? on Fri, 11 Feb 2005 13:15:37 GMT]]></title><description><![CDATA[<p>Was machst du hier? Funktionsadressen vergleichen? Das ist keine gute Idee und wird zu nichts führen.<br />
Du hast übrigens Recht. Du hast ein logisches Problem.</p>
<pre><code class="language-cpp">if (x &gt; y)
    return true;
return false;
</code></pre>
<p>schreibt man</p>
<pre><code class="language-cpp">return x &gt; y;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/720602</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/720602</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Fri, 11 Feb 2005 13:15:37 GMT</pubDate></item><item><title><![CDATA[Reply to Logisches Problem? on Mon, 14 Feb 2005 10:14:19 GMT]]></title><description><![CDATA[<p>a. Funktionsvergeleiche kann man so vergessen, weiß ich. Aber ich hatte das Problem und wollte das klären auch wenn es keinen Sinn gibt. Es könnte ja sein, das ein solches problem wann anders wieder auftaucht.<br />
b. sollte dein code das problem lösen??? was is dann bei mir falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/722836</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/722836</guid><dc:creator><![CDATA[DjFishbone]]></dc:creator><pubDate>Mon, 14 Feb 2005 10:14:19 GMT</pubDate></item><item><title><![CDATA[Reply to Logisches Problem? on Mon, 14 Feb 2005 11:43:35 GMT]]></title><description><![CDATA[<p>zu a)<br />
Wie gesagt, ein Vergleich von Funktionsadressen bringt nichts. Da es dem Compiler überlassen ist, wo er Funktionen platziert, hast du mit solchem Code mehr oder weniger undefiniertes Verhalten.<br />
zu b)<br />
Falsch ist da nichts. Du benutzt nur boolsche Logik ohne deren Anwendung wirklich verstanden zu haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/722931</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/722931</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Mon, 14 Feb 2005 11:43:35 GMT</pubDate></item><item><title><![CDATA[Reply to Logisches Problem? on Mon, 14 Feb 2005 22:43:07 GMT]]></title><description><![CDATA[<p>Ganz einfach: Dein Adressvergleich ist immer falsch, das zeigt Dir schon der Debugger:</p>
<pre><code class="language-asm">98:       if(((DWORD) ValidCompilation &gt; (DWORD) TrampolineProc)
99:           &amp;&amp; ((DWORD) TrampolineProc &gt; (DWORD) NewWindowProc))
10001508 B8 19 10 00 10       mov         eax,offset @ILT+20(ValidCompilation) (10001019)
1000150D 3D 05 10 00 10       cmp         eax,offset @ILT+0(TrampolineProc) (10001005)
10001512 76 11                jbe         ValidCompilation+35h (10001525)
10001514 B9 05 10 00 10       mov         ecx,offset @ILT+0(TrampolineProc) (10001005)
10001519 81 F9 1E 10 00 10    cmp         ecx,offset @ILT+25(NewWindowProc) (1000101e)
1000151F 76 04                jbe         ValidCompilation+35h (10001525)
</code></pre>
<p>Hier sagst Du: Wenn 10001019 &gt; 10001005 UND 10001005 &gt; 1000101E ist, dann gib &quot;true&quot; zurueck, sonst &quot;false&quot;. Da der zweite Teil immer falsch ist, ist die Bedingung nie erfuellt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/723521</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/723521</guid><dc:creator><![CDATA[Power Off]]></dc:creator><pubDate>Mon, 14 Feb 2005 22:43:07 GMT</pubDate></item><item><title><![CDATA[Reply to Logisches Problem? on Tue, 15 Feb 2005 08:32:32 GMT]]></title><description><![CDATA[<p>[quote=&quot;DjFishbone&quot;]Wieso kehrt meine Funktion mit false zurück, obwohl (100 mal geprüft) (DWORD) ValidCompilation &gt; (DWORD) TrampolineProc &gt; (DWORD) NewWindowProc ???<br />
quote]<br />
Also: Ich habe die boolsche Logik verstanden! Wie gesagt (und nochmal zitiert) ist TrampolinProc auf jeden Fall größer als ValidCompilation! Das habe ich mit dem Debugger geprüft, der mir die Variablen ANZEIGT. Also müsste da true rauskommen. Warum ich an diesem Beispiel festhalte habe ich bereits erkärt: Ich will keine Fragen offen stehen lassen auch wenn sich das eigentliche Problem von selbst gekärt hat.<br />
Nach meinem Verständnis über C++ kann ich die Adressen vergleiche, auch wenn ich dabei nicht unbedingt etwas verbnünftiges herausbekomme. Schaut doch mal in den Thread &quot;Größe einer Funktion&quot; von icy. Da erkärt jemand, dass man nur die Adressen von einander abzuziehen braucht um die Größe zu ermitteln. Das dieses nicht geht war mir kalr als ich im Debugger gesehen hab, das zwischen den Funktion ein großer Leerraum ist.<br />
Nach meinem Verständnis ist 5 &gt; 3 &amp;&amp; 6 &gt; 4 WAHR <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/723640</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/723640</guid><dc:creator><![CDATA[DjFishbone]]></dc:creator><pubDate>Tue, 15 Feb 2005 08:32:32 GMT</pubDate></item><item><title><![CDATA[Reply to Logisches Problem? on Tue, 15 Feb 2005 10:48:35 GMT]]></title><description><![CDATA[<p>Lass es einfach bleiben, oder mach das mit Assembler. Wie ich schon sagte, das Vergleichen von Funktionen liefert undefiniertes Verhalten. Wozu brauchst du eigentlich sowas?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/723780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/723780</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Tue, 15 Feb 2005 10:48:35 GMT</pubDate></item><item><title><![CDATA[Reply to Logisches Problem? on Wed, 16 Feb 2005 08:08:02 GMT]]></title><description><![CDATA[<p>Danke für deine letzte Antwort, die mir schon besser einleuchtet und generell für euer Interesse <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="😉"
    /></p>
<p>Die Frage, warum das nicht geht lässt sich anscheinend nicht klären... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/724589</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/724589</guid><dc:creator><![CDATA[DjFishbone]]></dc:creator><pubDate>Wed, 16 Feb 2005 08:08:02 GMT</pubDate></item><item><title><![CDATA[Reply to Logisches Problem? on Wed, 16 Feb 2005 12:43:28 GMT]]></title><description><![CDATA[<p>DjFishbone schrieb:</p>
<blockquote>
<p>Danke für deine letzte Antwort, die mir schon besser einleuchtet und generell für euer Interesse <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="😉"
    /></p>
</blockquote>
<p>Hör ich da leichten Mismut heraus? Was willst du denn noch wissen? Wurde doch schon alles beantwortet. Was das Ergebnis des Vergleichs betrifft, lies dir Power Off's Beitrag nochmal durch.</p>
<p>DjFishbone schrieb:</p>
<blockquote>
<p>Wieso kehrt meine Funktion mit false zurück, obwohl (100 mal geprüft) (DWORD) ValidCompilation &gt; (DWORD) TrampolineProc &gt; (DWORD) NewWindowProc ???</p>
</blockquote>
<p>Das kannst du niemandem erzählen, der Debugger liefert ja immerhin andere Fakten.</p>
<p>Zum Thema undefiniertes Verhalten, schau dir den C oder C++ Standard an, dann weisst du was das bedeutet.</p>
<p>DjFishbone schrieb:</p>
<blockquote>
<p>Die Frage, warum das nicht geht lässt sich anscheinend nicht klären... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
</blockquote>
<p>Doch, wurde ja auch gemacht. Wenn's Unklarheiten gibt, dann frag nach.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/724769</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/724769</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Wed, 16 Feb 2005 12:43:28 GMT</pubDate></item></channel></rss>