<?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[Debug vs. Release]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>stehe gerade vor einem ganz strangen Problem. Ich habe eine DLL entwickelt, welche per VBA angesprochen wird. Debugge ich das Release-Build bekomme ich die richtigen Ergebnisse in Excel zurück gegeben. Starte ich aber die Funktion (ohne Debugging) von Excel aus, wird Excel mit einem schwerwiegenden Fehler beendet. Dies kommt allerdings nur vor, wenn mit folgender Funktion der Minimumwert errechnet wird und alle Werte gleich groß sind:</p>
<pre><code>int kleinsterWert=0;

   int z = 0;

    kleinsterWert = vergleichsarray[0];
    for (; z &lt; sizeof(vergleichsarray) / sizeof(int); z++) {
        if (vergleichsarray[z] &lt; kleinsterWert)
            kleinsterWert = vergleichsarray[z];
    }
</code></pre>
<p>Dieser Wert wird dann einem Array gegenübergestellt um die Zeile zu bestimmen:</p>
<pre><code>for (i=0; i&lt;anzahlRessourcen; i++)
	{
		if (kleinsterWert==vergleichsarray[i])
		{break;
		}
	}
</code></pre>
<p>Die Ergebnisse werden sowohl im Debug, Release (debugging mit der Excel-Datei) und Release korrekt kalkuliert. Führe ich aber das Release per Excel (ohne debugging) aus, wird Excel mit einem schwerwiegenden Fehler beendet.<br />
Woran kann das liegen bzw. wie komme ich auf den Fehler. Die Ergebnisse sind da und werden korrekt zurückgeschrieben.</p>
<p>Hoffe ich bin mit meiner Anfrage im richtigen Forum.</p>
<p>Danke jedenfalls jetzt schon für die Hilfe.</p>
<p>Liebe Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/269510/debug-vs-release</link><generator>RSS for Node</generator><lastBuildDate>Mon, 31 Aug 2026 03:22:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/269510.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 26 Jun 2010 13:42:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Debug vs. Release on Sat, 26 Jun 2010 13:42:37 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>stehe gerade vor einem ganz strangen Problem. Ich habe eine DLL entwickelt, welche per VBA angesprochen wird. Debugge ich das Release-Build bekomme ich die richtigen Ergebnisse in Excel zurück gegeben. Starte ich aber die Funktion (ohne Debugging) von Excel aus, wird Excel mit einem schwerwiegenden Fehler beendet. Dies kommt allerdings nur vor, wenn mit folgender Funktion der Minimumwert errechnet wird und alle Werte gleich groß sind:</p>
<pre><code>int kleinsterWert=0;

   int z = 0;

    kleinsterWert = vergleichsarray[0];
    for (; z &lt; sizeof(vergleichsarray) / sizeof(int); z++) {
        if (vergleichsarray[z] &lt; kleinsterWert)
            kleinsterWert = vergleichsarray[z];
    }
</code></pre>
<p>Dieser Wert wird dann einem Array gegenübergestellt um die Zeile zu bestimmen:</p>
<pre><code>for (i=0; i&lt;anzahlRessourcen; i++)
	{
		if (kleinsterWert==vergleichsarray[i])
		{break;
		}
	}
</code></pre>
<p>Die Ergebnisse werden sowohl im Debug, Release (debugging mit der Excel-Datei) und Release korrekt kalkuliert. Führe ich aber das Release per Excel (ohne debugging) aus, wird Excel mit einem schwerwiegenden Fehler beendet.<br />
Woran kann das liegen bzw. wie komme ich auf den Fehler. Die Ergebnisse sind da und werden korrekt zurückgeschrieben.</p>
<p>Hoffe ich bin mit meiner Anfrage im richtigen Forum.</p>
<p>Danke jedenfalls jetzt schon für die Hilfe.</p>
<p>Liebe Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1917614</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1917614</guid><dc:creator><![CDATA[schreima]]></dc:creator><pubDate>Sat, 26 Jun 2010 13:42:37 GMT</pubDate></item><item><title><![CDATA[Reply to Debug vs. Release on Sat, 26 Jun 2010 13:48:18 GMT]]></title><description><![CDATA[<p>Wo ist <code>vergleichsarray</code> deklariert? Ist es ein Zeiger?</p>
<p>Und gibt es einen Grund, wieso du auf die STL verzichtest? Nicht nur Containerklassen wie <code>std::vector</code> , sondern auch Algorithmen könnten dir massiv Arbeit abnehmen.</p>
<pre><code class="language-cpp">std::vector&lt;int&gt; vergleichsarray;
// ...
int max = *std::max_element(vergleichsarray.begin(), vergleichsarray.end());
</code></pre>
<p>Die entsprechende Dokumentation findest du auf <a href="http://www.cplusplus.com" rel="nofollow">www.cplusplus.com</a>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1917618</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1917618</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 26 Jun 2010 13:48:18 GMT</pubDate></item><item><title><![CDATA[Reply to Debug vs. Release on Sat, 26 Jun 2010 14:02:53 GMT]]></title><description><![CDATA[<p>Wow, das ging aber schnell <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>vergleichsarray ist zu Beginn der Funktion korrekt deklariert und es wird auch korrekt gefüllt.<br />
Ursprünglich hatte *min_element integriert. Ich dachte mir, dass daher der Fehler kommt und habe den Teil eigens umgeschrieben um es auszutesten.<br />
War nur leider nicht zielführend. Die Funktion rechnet richtig und das Ergebnis kann auch weiter verwendet werden.<br />
Ich verstehe nicht, warum die DLL bis zum Schluss die richtigen Ergebnisse liefert, wenn ich das Release debugge und wenn ich es nicht debugge sonder direkt ansteuere mir die Ergebnisse zwar vorliegen, aber Excel abschmiert. (In VBA ist aber auch kein Fehler, da direkt nach dem DLL Aufruf Sense ist).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1917625</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1917625</guid><dc:creator><![CDATA[schreima]]></dc:creator><pubDate>Sat, 26 Jun 2010 14:02:53 GMT</pubDate></item><item><title><![CDATA[Reply to Debug vs. Release on Sat, 26 Jun 2010 14:17:57 GMT]]></title><description><![CDATA[<p>schreima schrieb:</p>
<blockquote>
<p>vergleichsarray ist zu Beginn der Funktion korrekt deklariert und es wird auch korrekt gefüllt.</p>
</blockquote>
<p>Das beantwortet aber nicht die Frage, <strong>wie</strong> es deklariert ist. Kannst du den Code der ganzen Funktion zeigen?</p>
<p>Woher weisst du überhaupt, dass der Fehler dort auftritt? Hast du schon versucht, mit Ausgaben (oder dem Debugger) die genaue Absturzstelle zu lokalisieren?</p>
<p>schreima schrieb:</p>
<blockquote>
<p>Ursprünglich hatte *min_element integriert. Ich dachte mir, dass daher der Fehler kommt und habe den Teil eigens umgeschrieben um es auszutesten.</p>
</blockquote>
<p>Die STL-Algorithmen sind schon korrekt programmiert. Du solltest sie eigenen Implementierungen eigentlich immer vorziehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1917628</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1917628</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 26 Jun 2010 14:17:57 GMT</pubDate></item><item><title><![CDATA[Reply to Debug vs. Release on Sat, 26 Jun 2010 15:27:16 GMT]]></title><description><![CDATA[<p>achtung,</p>
<pre><code class="language-cpp">std::vector&lt;int&gt; vergleichsarray;
// ...
int max = *std::max_element(vergleichsarray.begin(), vergleichsarray.end());
</code></pre>
<p>wenn der container leer ist, krachts...<br />
lieber wirklich den iterator speichern, gegen end prüfen und erst dann dereferenzieren(nein, nicht wenn er gleich end ist^^)</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1917656</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1917656</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Sat, 26 Jun 2010 15:27:16 GMT</pubDate></item><item><title><![CDATA[Reply to Debug vs. Release on Sun, 27 Jun 2010 11:11:07 GMT]]></title><description><![CDATA[<p>Danke für eure Hilfe. Ich hab den Fehler gefunden. Vergleichsarray war zu klein dimensioniert. Jetzt läufts perfekt.<br />
Liebe Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1917864</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1917864</guid><dc:creator><![CDATA[schreima]]></dc:creator><pubDate>Sun, 27 Jun 2010 11:11:07 GMT</pubDate></item><item><title><![CDATA[Reply to Debug vs. Release on Sun, 27 Jun 2010 11:13:26 GMT]]></title><description><![CDATA[<p>Solche Fehler hättest du unmittelbar gefunden, wenn du Container benutzen würdest...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1917866</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1917866</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 27 Jun 2010 11:13:26 GMT</pubDate></item><item><title><![CDATA[Reply to Debug vs. Release on Sun, 27 Jun 2010 18:03:03 GMT]]></title><description><![CDATA[<p>Danke fuer den tipp, beschaeftige mich erst seit ein paar monaten mit c++. Hab einige vorkenntnisse in vba und somit kann ich mich halbwegs gut ueber bestimmte problemstellungen helfen. Das programm funktioniert jetzt recht gut, aber fuer die zukunft muss ich mein wissen noch sicher erweitern. Hast du zu den containern zufaellig eine einfach verstaendliche doku parat?</p>
<p>Einen wichtigen punkt brauche ich noch fuer mein programm. Und zwar die kommunikation zwischen vba und einer c++ dll. Ich moechte einen string aus vba an die dll uebergeben, in der dll verandern und wieder an vba retour schicken. Im moment loese ich das mit csv dateien als kommunikationstraeger. Ich habe das problem schon gegoogelt und herausgefunded, dass ein string in vba anders aussieht als ein string in c++ (beides als string deklariert). Das problem habe ich erkannt, allerdings die ursache und ev loesungen im netz sind mir zu hoch, bin leider kein informatiker <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="🙂"
    /> hast du da vl auch einen tipp, wie ich zb &quot;hallo&quot; von vba an ne dll schicke und &quot;hallo retour&quot; in vba als messagebox zurueck bekomme.</p>
<p>Danke,<br />
Liebe gruesse</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1918042</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1918042</guid><dc:creator><![CDATA[schreima]]></dc:creator><pubDate>Sun, 27 Jun 2010 18:03:03 GMT</pubDate></item><item><title><![CDATA[Reply to Debug vs. Release on Sun, 27 Jun 2010 18:09:48 GMT]]></title><description><![CDATA[<p>schreima schrieb:</p>
<blockquote>
<p>Hast du zu den containern zufaellig eine einfach verstaendliche doku parat?</p>
</blockquote>
<p><a href="http://magazin.c-plusplus.net/artikel/Aufbau%20der%20STL%20-%20Teil%201%3A%20Container" rel="nofollow">In diesem Artikel</a> findest du eine Einführung. Als Dokumentation kannst du <a href="http://www.cplusplus.com" rel="nofollow">www.cplusplus.com</a> verwenden.</p>
<p>schreima schrieb:</p>
<blockquote>
<p>Ich moechte einen string aus vba an die dll uebergeben, in der dll verandern und wieder an vba retour schicken.</p>
</blockquote>
<p>Ich kenne VBA leider nicht und kann dir deshalb nichts Konkretes bezüglich Interoperabilität mit C++-DLLs sagen. Aber vielleicht gibt es eine Möglichkeit über C-Strings (nullterminierte <code>char</code> -Arrays). Allerdings gibt es hier sicher andere Leute, die sich besser damit auskennen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1918051</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1918051</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 27 Jun 2010 18:09:48 GMT</pubDate></item><item><title><![CDATA[Reply to Debug vs. Release on Sun, 27 Jun 2010 18:16:55 GMT]]></title><description><![CDATA[<p>String ist String. Am Ende eine Null-terminierte Folge von Zeichen, die in einem Speicherbereich liegen.</p>
<p>Am Ende einfach mal eine Testfunktion erstellen, das ganze als DLL kompillieren und mal in VB über import o.ä. reinladen...</p>
<p>Erstellen der DLL (<a href="http://www.google.de/search?sourceid=chrome&amp;ie=UTF-8&amp;q=c%2B%2B+dll+erstellen" rel="nofollow">Google</a>)<br />
<a href="http://de.wikipedia.org/wiki/Dynamic_Link_Library" rel="nofollow">http://de.wikipedia.org/wiki/Dynamic_Link_Library</a></p>
<p>Laden der DLL in VBA (<a href="http://www.google.de/search?hl=de&amp;safe=off&amp;q=VBA+DLL+nutzen&amp;aq=f&amp;aqi=&amp;aql=&amp;oq=&amp;gs_rfai=" rel="nofollow">Google</a>)<br />
<a href="http://www.tutorials.de/forum/visual-basic-6-0/164095-externe-dll-unter-vba-excel-einbinden.html" rel="nofollow">http://www.tutorials.de/forum/visual-basic-6-0/164095-externe-dll-unter-vba-excel-einbinden.html</a></p>
<p>Sind jetzt nur gegoogelte Beispiele... Sollte aber helfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1918062</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1918062</guid><dc:creator><![CDATA[Blackskyliner]]></dc:creator><pubDate>Sun, 27 Jun 2010 18:16:55 GMT</pubDate></item></channel></rss>