<?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[Globale Deklaration gegen Pointer Wirrwarr]]></title><description><![CDATA[<p>Hallo Zusammen.</p>
<p>Zunächst einmal das Problem zum Überblick:<br />
In meinem Fall entsteht ein Durcheinander mit den Pointern auf ein Array. Das würde ich gerne über eine globale Deklaration das Arrays 'dblArray' beheben, aber wie?</p>
<p>Nun die genaue Beschreibung:</p>
<p>Ich habe mir eine Funktion in eine DLL geschrieben, die auch ganz wunderbar funktioniert. Die Funktion sieht so aus:</p>
<pre><code class="language-cpp">double _stdcall dblMeineDLL (long lngVal1, double dblArray[])
{
    //der entsprechnde Code
    double Result = dblMaxVomArray(dblArray);
    return 0;
}
</code></pre>
<p>Aus VBA rufe ich die DLL auf und übergebe einen Long-Wert als Wert an die Variable lngVal1 und eine Referenz auf das erste Element einer Matrix die in VBA erstellt wurde.<br />
Alles in der Funktion 'dblMeineDLL' funktioniert, aber nun möchte ich in der Funktion 'dblMeineDLL' eine weitere kleine C++ Funktion, hier 'dblMaxVomArray' aufrufen, die mit dem Array dblArray arbeiten soll. Die Funktion 'dblMaxVomArray':</p>
<pre><code class="language-cpp">double dblMaxVomArray (double dblSuchArray[])
{
    int i;
    double dblMax = dblSuchArray[0];

    for (i = 1; i &lt; 100; i++) {
        if(dblSuchArray[i] &gt; dblMax)
            dblMax = dblSuchArray[i];
    }
    return dblMax;
}
</code></pre>
<p>Wie muss ich die Variable 'dblArray' global deklarieren, dass ich das Array in allen Funktionen der DLL nutzen kann?</p>
<p>Vielen Dank und Grüße,<br />
Dirk</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/6537/globale-deklaration-gegen-pointer-wirrwarr</link><generator>RSS for Node</generator><lastBuildDate>Tue, 21 Apr 2026 17:00:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/6537.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 09 Jul 2003 12:42:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Globale Deklaration gegen Pointer Wirrwarr on Wed, 09 Jul 2003 12:42:00 GMT]]></title><description><![CDATA[<p>Hallo Zusammen.</p>
<p>Zunächst einmal das Problem zum Überblick:<br />
In meinem Fall entsteht ein Durcheinander mit den Pointern auf ein Array. Das würde ich gerne über eine globale Deklaration das Arrays 'dblArray' beheben, aber wie?</p>
<p>Nun die genaue Beschreibung:</p>
<p>Ich habe mir eine Funktion in eine DLL geschrieben, die auch ganz wunderbar funktioniert. Die Funktion sieht so aus:</p>
<pre><code class="language-cpp">double _stdcall dblMeineDLL (long lngVal1, double dblArray[])
{
    //der entsprechnde Code
    double Result = dblMaxVomArray(dblArray);
    return 0;
}
</code></pre>
<p>Aus VBA rufe ich die DLL auf und übergebe einen Long-Wert als Wert an die Variable lngVal1 und eine Referenz auf das erste Element einer Matrix die in VBA erstellt wurde.<br />
Alles in der Funktion 'dblMeineDLL' funktioniert, aber nun möchte ich in der Funktion 'dblMeineDLL' eine weitere kleine C++ Funktion, hier 'dblMaxVomArray' aufrufen, die mit dem Array dblArray arbeiten soll. Die Funktion 'dblMaxVomArray':</p>
<pre><code class="language-cpp">double dblMaxVomArray (double dblSuchArray[])
{
    int i;
    double dblMax = dblSuchArray[0];

    for (i = 1; i &lt; 100; i++) {
        if(dblSuchArray[i] &gt; dblMax)
            dblMax = dblSuchArray[i];
    }
    return dblMax;
}
</code></pre>
<p>Wie muss ich die Variable 'dblArray' global deklarieren, dass ich das Array in allen Funktionen der DLL nutzen kann?</p>
<p>Vielen Dank und Grüße,<br />
Dirk</p>
]]></description><link>https://www.c-plusplus.net/forum/post/31788</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/31788</guid><dc:creator><![CDATA[Dirk99]]></dc:creator><pubDate>Wed, 09 Jul 2003 12:42:00 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Deklaration gegen Pointer Wirrwarr on Wed, 09 Jul 2003 13:10:00 GMT]]></title><description><![CDATA[<p>Moment ...<br />
sag bloss, du gehst tatsächlich in einen Harley-Davidson-Club und schwärmst die ganze Zeit von deiner Suzuki?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/31789</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/31789</guid><dc:creator><![CDATA[RenéG]]></dc:creator><pubDate>Wed, 09 Jul 2003 13:10:00 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Deklaration gegen Pointer Wirrwarr on Wed, 09 Jul 2003 13:37:00 GMT]]></title><description><![CDATA[<p>Hallo RenéG,</p>
<blockquote>
<p>Original erstellt von RenéG:<br />
<strong>Moment ...<br />
sag bloss, du gehst tatsächlich in einen Harley-Davidson-Club und schwärmst die ganze Zeit von deiner Suzuki?</strong></p>
</blockquote>
<p>ich weiß es ist blöd wenn man Witze erklärt haben möchte, aber den verstehe ich nicht.<br />
Was hat das mit dem obigen Problem zu tun?</p>
<p>Grüße,<br />
Dirk</p>
]]></description><link>https://www.c-plusplus.net/forum/post/31790</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/31790</guid><dc:creator><![CDATA[Dirk99]]></dc:creator><pubDate>Wed, 09 Jul 2003 13:37:00 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Deklaration gegen Pointer Wirrwarr on Wed, 09 Jul 2003 13:50:00 GMT]]></title><description><![CDATA[<p>Es war kein Witz.</p>
<p>Einer der Vorzüge von C++ ist, keine globalen Variablen zu verwenden. Und du<br />
postest in einem C++-Forum über den Vorzug globaler Variablen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/31791</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/31791</guid><dc:creator><![CDATA[RenéG]]></dc:creator><pubDate>Wed, 09 Jul 2003 13:50:00 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Deklaration gegen Pointer Wirrwarr on Wed, 09 Jul 2003 13:58:00 GMT]]></title><description><![CDATA[<p>Hallo RenéG.</p>
<p>Ach so, ich verstehe.</p>
<p>Kannst du mir denn sagen, wie ich mein Problem ohne globale Variablen in den Griff bekomme? Wenn ich eine gute Lösung ohne globale Variablen hätte würde ich mich ebenso freuen.</p>
<p>Grüße,<br />
Dirk</p>
]]></description><link>https://www.c-plusplus.net/forum/post/31792</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/31792</guid><dc:creator><![CDATA[Dirk99]]></dc:creator><pubDate>Wed, 09 Jul 2003 13:58:00 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Deklaration gegen Pointer Wirrwarr on Wed, 09 Jul 2003 14:17:00 GMT]]></title><description><![CDATA[<p>Dein erstes Problem ist doch, dass Du eine DLL benutzt. DLLs sind deshalb DLLs, weil sie vielseitig einsetzbar sein sollen.<br />
Die Grenzen in deiner Schleife, welche auf das double-Array zugreift, sind allerdings statisch, so dass Deine DLL nur funktioniert, wenn das Array nicht mehr als 100 Einträge enthält.<br />
Weiterhin ist es wirklich nicht schlimm, jeder Funktion einen Parameter mitzugeben, der auf das Array zeigt. Es ist zum einen besser zu debuggen und zum zweiten sicherer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/31793</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/31793</guid><dc:creator><![CDATA[RenéG]]></dc:creator><pubDate>Wed, 09 Jul 2003 14:17:00 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Deklaration gegen Pointer Wirrwarr on Wed, 09 Jul 2003 14:31:00 GMT]]></title><description><![CDATA[<p>Das ich die Schleife auf 100 gesetzt habe war nur um nicht überflüssig viele Variablen zu haben. Klar ziehe ich noch eine Long-Variable durch in der die Größe des Arrays steht.</p>
<p>Aber mein Problem ist ein anderes. Ich habe in der DLL noch die folgende (als Beispiel extra kleine) Funktion definiert:</p>
<pre><code class="language-cpp">void TestTest(double dblUebergabeArray[])
{
    dblUebergabeArray[0] = 100;
}
</code></pre>
<p>Diese rufe ich aus der im 1. Post definierten Funktion 'dblMeineDLL' so auf:</p>
<pre><code class="language-cpp">double _stdcall dblMeineDLL (long lngVal1, double dblArray[])
{
    TestTest(dblArray);    //cannot convert parameter 1 from 'double []' to 'double'
    return 0;
}
</code></pre>
<p>Wie werde ich diesen Fehler los? Ich denke, dass irgendwas mit meiner übergabe nicht stimmt, aber was?</p>
<p>Grüße,<br />
Dirk</p>
<p>Edit: Die Funktion TestTest ist in Kopf der .cpp so definiert: 'void TestTest (double);'</p>
<p>[ Dieser Beitrag wurde am 09.07.2003 um 17:29 Uhr von <strong>Dirk99</strong> editiert. ]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/31794</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/31794</guid><dc:creator><![CDATA[Dirk99]]></dc:creator><pubDate>Wed, 09 Jul 2003 14:31:00 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Deklaration gegen Pointer Wirrwarr on Wed, 09 Jul 2003 16:02:00 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Nach einigem rumprobieren und stöbern habe ich die Lösung anscheinend selbst gefunden:<br />
Im Kopf habe ich die Funktion nun so definiert:</p>
<pre><code class="language-cpp">void TestTest (double *);
</code></pre>
<p>Der Aufruf in 'dblMeineDLL' bleibt gleich. Die Funktion TetsTest lautet nun so:</p>
<pre><code class="language-cpp">void TestTest(double *dblArray)
{
    for (int i = 0; i &lt; 300; i++) {
        dblArray[i] = (double) 100;
    }
}
</code></pre>
<p>Damit werden die ersten 300 Einträge des Arrays welches an 'TestTest' übergeben wird auf 100 gesetzt.</p>
<p>Vielen Dank und Grüße,<br />
Dirk</p>
]]></description><link>https://www.c-plusplus.net/forum/post/31795</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/31795</guid><dc:creator><![CDATA[Dirk99]]></dc:creator><pubDate>Wed, 09 Jul 2003 16:02:00 GMT</pubDate></item></channel></rss>