<?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[C++ DLL - Visual Basic - übergabe der Var.]]></title><description><![CDATA[<p>Hallo</p>
<p>Hätte einige Fragen zu C++ und DLL im Zusammenhang mit VB</p>
<p>Ist es möglich den Wert in C++ zu bestimmen was von VB geschickt/übergeben wird?<br />
(also ohne das man den Typ der Variable kennt) - dann in C++ automatisch den richtigen Typ finden<br />
oder ist es nur möglich wenn man in VB den Typ angibt und dann auch im Interface der C++ DLL den richtigen Typ annimmt.</p>
<p>Wie kann ich auf eine globale Variable (Array), welcher unter C++ angelegt wird in VB sichtbar machen bzw. zugreifen?</p>
<p>Vielen Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/115279/c-dll-visual-basic-übergabe-der-var</link><generator>RSS for Node</generator><lastBuildDate>Thu, 02 Jul 2026 22:39:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/115279.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 13 Jul 2005 06:31:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to C++ DLL - Visual Basic - übergabe der Var. on Wed, 13 Jul 2005 06:31:45 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Hätte einige Fragen zu C++ und DLL im Zusammenhang mit VB</p>
<p>Ist es möglich den Wert in C++ zu bestimmen was von VB geschickt/übergeben wird?<br />
(also ohne das man den Typ der Variable kennt) - dann in C++ automatisch den richtigen Typ finden<br />
oder ist es nur möglich wenn man in VB den Typ angibt und dann auch im Interface der C++ DLL den richtigen Typ annimmt.</p>
<p>Wie kann ich auf eine globale Variable (Array), welcher unter C++ angelegt wird in VB sichtbar machen bzw. zugreifen?</p>
<p>Vielen Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/829832</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/829832</guid><dc:creator><![CDATA[c147258]]></dc:creator><pubDate>Wed, 13 Jul 2005 06:31:45 GMT</pubDate></item><item><title><![CDATA[Reply to C++ DLL - Visual Basic - übergabe der Var. on Wed, 13 Jul 2005 06:53:32 GMT]]></title><description><![CDATA[<p>Wenn du als Datentyp VARIANT verwendest kann man in C++ ermitteln welchen<br />
konkreten Datentyp du in deinen Variant hineingesteckt hast.<br />
Ein direkter Datenzugriff ist nicht möglich. Du musst den Zugriff über<br />
Funktionen kapseln oder gleich das ganz mit COM realisieren.</p>
<p>PS.: Deine Frage gehört nicht in diese Sub-Forum sondern nach WINAPI.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/829843</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/829843</guid><dc:creator><![CDATA[Redhead]]></dc:creator><pubDate>Wed, 13 Jul 2005 06:53:32 GMT</pubDate></item><item><title><![CDATA[Reply to C++ DLL - Visual Basic - übergabe der Var. on Wed, 13 Jul 2005 07:00:25 GMT]]></title><description><![CDATA[<p>Redhead schrieb:</p>
<blockquote>
<p>Ein direkter Datenzugriff ist nicht möglich.</p>
</blockquote>
<p>Ich möchte in VB so zugreifen können wie es auf die Funktion (Interface) möglich ist. -&gt; was wäre hier dafür die perfekte Lösung (und auch einfachste Lösung ;))?<br />
(evtl. Links vorhanden?)</p>
<p>Danke <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/829848</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/829848</guid><dc:creator><![CDATA[c147258]]></dc:creator><pubDate>Wed, 13 Jul 2005 07:00:25 GMT</pubDate></item><item><title><![CDATA[Reply to C++ DLL - Visual Basic - übergabe der Var. on Wed, 13 Jul 2005 09:51:03 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile.php?mode=viewprofile&amp;u=403" rel="nofollow">HumeSikkins</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=15" rel="nofollow">C++</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=4" rel="nofollow">WinAPI</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic.php?t=39405" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/830017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/830017</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Wed, 13 Jul 2005 09:51:03 GMT</pubDate></item><item><title><![CDATA[Reply to C++ DLL - Visual Basic - übergabe der Var. on Wed, 13 Jul 2005 09:57:06 GMT]]></title><description><![CDATA[<p>c147258 schrieb:</p>
<blockquote>
<p>Ich möchte in VB so zugreifen können wie es auf die Funktion (Interface) möglich ist.</p>
</blockquote>
<p>Ich verstehe kein Wort. Könntest du das etwas klarer und ausführlicher erläutern? Ein Anwendungsbeispiel wäre nicht schlecht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/830030</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/830030</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Wed, 13 Jul 2005 09:57:06 GMT</pubDate></item><item><title><![CDATA[Reply to C++ DLL - Visual Basic - übergabe der Var. on Wed, 13 Jul 2005 10:10:39 GMT]]></title><description><![CDATA[<p>Sry <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>Folgendes:<br />
VB - Programm<br />
C++ - DLL</p>
<p>Nun will ich in C++ eine globale Liste(doppelt verkettet) anlegen und später sollte man in VB auf die Liste welche in C++ erstellt wurde zugriff haben (ohne es mit einer Fkt oder ähnlich zu übergeben) - direkter Zugriff eben</p>
<p>Hoffe das es ca. verständlich ist was ich meine, wenn nicht bitte nochmals melden</p>
<p>Danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/830048</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/830048</guid><dc:creator><![CDATA[c147258]]></dc:creator><pubDate>Wed, 13 Jul 2005 10:10:39 GMT</pubDate></item><item><title><![CDATA[Reply to C++ DLL - Visual Basic - übergabe der Var. on Wed, 13 Jul 2005 10:15:49 GMT]]></title><description><![CDATA[<p>c147258 schrieb:</p>
<blockquote>
<p>Hoffe das es ca. verständlich ist was ich meine, wenn nicht bitte nochmals melden</p>
</blockquote>
<p>*meld*</p>
<p>Wie soll denn der VB-Code hinterher in etwa aussehen?</p>
<p>Ich sehe da schwarz.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/830054</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/830054</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Wed, 13 Jul 2005 10:15:49 GMT</pubDate></item><item><title><![CDATA[Reply to C++ DLL - Visual Basic - übergabe der Var. on Wed, 13 Jul 2005 10:26:04 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>sry²</p>
<p>Es ist ein Programm, welches in VB geschrieben ist - ist schon fertig!<br />
Ich soll nun eine C++ DLL dazuprogrammieren da die Sortierung in VB ziemlich langsam ist. Es soll eine Sort und Add Funktion in der DLL enthalten sein, welche man in VB aufrufen kann. Bei Add wird ein Wert übergeben und dieser wird in einer Liste (DVL) gespeichert (als Global). Bei Sort wird nichts übergeben - es soll einfach die Fkt in C++ aufgerufen werden und die Liste sortiert werden mittels Quicksort(wird gerade umgeschrieben). Und nun möchte ich auf die Liste von C++ (DLL) in VB zugreifen können.</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /> Danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/830064</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/830064</guid><dc:creator><![CDATA[c147258]]></dc:creator><pubDate>Wed, 13 Jul 2005 10:26:04 GMT</pubDate></item><item><title><![CDATA[Reply to C++ DLL - Visual Basic - übergabe der Var. on Wed, 13 Jul 2005 10:28:25 GMT]]></title><description><![CDATA[<p>Und was sind das für Dinger, die da sortiert werden sollen? Zahlen? Strings?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/830067</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/830067</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Wed, 13 Jul 2005 10:28:25 GMT</pubDate></item><item><title><![CDATA[Reply to C++ DLL - Visual Basic - übergabe der Var. on Wed, 13 Jul 2005 10:35:34 GMT]]></title><description><![CDATA[<p>uhi..ich &quot;vergissmeinnciht&quot;</p>
<p>zZ sind es ganz normale Integer.<br />
Später dann sollen es auch noch Strings, Double und Objekte(k.A) sein.</p>
<p>Also wenn ich nun die Add Fkt von VB aus aufrufe wird ein Wert übergeben und dieser in einer Liste gespeichert (ist global angelegt) - das funkt schon...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/830071</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/830071</guid><dc:creator><![CDATA[c147258]]></dc:creator><pubDate>Wed, 13 Jul 2005 10:35:34 GMT</pubDate></item><item><title><![CDATA[Reply to C++ DLL - Visual Basic - übergabe der Var. on Wed, 13 Jul 2005 10:45:53 GMT]]></title><description><![CDATA[<p>c147258 schrieb:</p>
<blockquote>
<p>Also wenn ich nun die Add Fkt von VB aus aufrufe wird ein Wert übergeben und dieser in einer Liste gespeichert (ist global angelegt) - das funkt schon...</p>
</blockquote>
<p>Das ist auch das kleinste Problem.</p>
<p>Ich denke, es ist nicht möglich, eine verkette Liste von C++ nach VB zurückzugeben, ohne dass man Funktionsaufrufe benötigt, um in VB durch die Liste zu navigieren. Die Verweiszeiger von C++ kannst du in VB jedenfalls nicht verwenden. Einen Array solltest du zurückgeben können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/830079</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/830079</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Wed, 13 Jul 2005 10:45:53 GMT</pubDate></item><item><title><![CDATA[Reply to C++ DLL - Visual Basic - übergabe der Var. on Wed, 13 Jul 2005 10:53:16 GMT]]></title><description><![CDATA[<p>Vielen Dank</p>
<p>d.h vorher auf ein Array konvertieren..das dürfte kein Problem sein.</p>
<p>bzgl. direkten Zugriff auf das Array, welches in C++ erzeugt wird - Nur Umweg über Rückgabe des Arrays - Funktion an VB möglich oder?<br />
<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/830082</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/830082</guid><dc:creator><![CDATA[c147258]]></dc:creator><pubDate>Wed, 13 Jul 2005 10:53:16 GMT</pubDate></item><item><title><![CDATA[Reply to C++ DLL - Visual Basic - übergabe der Var. on Wed, 13 Jul 2005 13:10:21 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>bräuchte leider schon wieder deine Hilfe</p>
<p>Dieses Mal ist soll die Variant Variable kein Array sein sonder nur ein Wert.</p>
<pre><code>STDMETHODIMP CAlgo::Add(VARIANT *variant_element)
{

	defDataType(variant_element);

	//insertElementBegin(value, &amp;listB, &amp;listE);

	//Quicksort_int(array_int, 0, nCount);

	return S_OK;
}

//
// defDataType
// Datentyps des Elements bestimmen/definieren
//

int defDataType (VARIANT *variant_element) 
{
		//.vt = variant type
		switch (variant_element[0].vt)
		{

			//Integer
			case VT_I2:
			{
				//array_int[i] = variant_element.iVal;
				break;
			}
....
</code></pre>
<p>-&gt;&gt; Speicherzugriffsfehler</p>
<pre><code>108:          switch (variant_element[1].vt)
109:          {
012B1888   mov         eax,dword ptr [ebp+8]
012B188B   xor         ecx,ecx
012B188D   mov         cx,word ptr [eax+10h]  ----&gt; FEHLER
</code></pre>
<p>Wie kann ich auf die Variant Variable nun zugreifen? bzw. ist es überhaupt möglich?</p>
<p>also nun wird in VB ein belieber Wert übergeben (VB konvertiert selbst) und in C++ DLL wird der Datentyp als Variant angenommen und dann guck ich nach welcher Typ das nun ist und arbeite mit dem weiter.</p>
<p>Vielen Dank! <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/830232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/830232</guid><dc:creator><![CDATA[c147258]]></dc:creator><pubDate>Wed, 13 Jul 2005 13:10:21 GMT</pubDate></item><item><title><![CDATA[Reply to C++ DLL - Visual Basic - übergabe der Var. on Wed, 13 Jul 2005 13:13:27 GMT]]></title><description><![CDATA[<p>c147258 schrieb:</p>
<blockquote>
<p>switch (variant_element[<strong>0</strong>].vt)<br />
[später]<br />
switch (variant_element[<strong>1</strong>].vt)</p>
</blockquote>
<p>Irgendwie passt der Code hier nicht zusammen. Hast du den Code geändert und dann nicht kompiliert? Oder hast du den falschen Code geändert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/830235</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/830235</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Wed, 13 Jul 2005 13:13:27 GMT</pubDate></item><item><title><![CDATA[Reply to C++ DLL - Visual Basic - übergabe der Var. on Wed, 13 Jul 2005 13:23:25 GMT]]></title><description><![CDATA[<p>MFK schrieb:</p>
<blockquote>
<p>Irgendwie passt der Code hier nicht zusammen.</p>
</blockquote>
<p>Ja, wurde geändert, aber egal ob nun 1 oder 0 drinnen steht - Speicherzugriffsfehler - &quot;Die Anweisung in &quot;0x012b185d&quot; verweist auf den Speicher in &quot;0x0000004&quot;.&quot; ... Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/830259</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/830259</guid><dc:creator><![CDATA[c147258]]></dc:creator><pubDate>Wed, 13 Jul 2005 13:23:25 GMT</pubDate></item><item><title><![CDATA[Reply to C++ DLL - Visual Basic - übergabe der Var. on Wed, 13 Jul 2005 13:33:34 GMT]]></title><description><![CDATA[<p>Wie sieht die Deklaration von Add aus (.idl oder attributiert)?<br />
Wie rufst du die Funktion in VB auf?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/830271</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/830271</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Wed, 13 Jul 2005 13:33:34 GMT</pubDate></item><item><title><![CDATA[Reply to C++ DLL - Visual Basic - übergabe der Var. on Wed, 13 Jul 2005 13:45:48 GMT]]></title><description><![CDATA[<p>Hallo, danke für deine Hilfe - ich hoffe du meinst das: Algo.h</p>
<p>Auszug aus Algo.h</p>
<pre><code>// IAlgo
public:
	STDMETHOD(Sort)(/*[in,out]*/ SAFEARRAY **psaArray);
	STDMETHOD(Add)(VARIANT *variant_element);
	};

#endif //__ALGO_H_
</code></pre>
<p>Auszug test.h</p>
<pre><code>#if defined(__cplusplus) &amp;&amp; !defined(CINTERFACE)

    MIDL_INTERFACE(&quot;A4294808-2FFE-4311-9EFA-21720C87BA23&quot;)
    IAlgo : public IDispatch
    {
    public:
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Sort( 
            /* [out][in] */ SAFEARRAY __RPC_FAR * __RPC_FAR *psaArray) = 0;

        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Add( 
            /* [in] */ VARIANT __RPC_FAR *variant_element) = 0;

    };

#else 	/* C style interface */
</code></pre>
<p>Auszug test.idl</p>
<pre><code>]
	interface IAlgo : IDispatch
	{
		[id(2), helpstring(&quot;Methode Sort&quot;)] HRESULT Sort([in,out] SAFEARRAY(VARIANT) *psaArray);
		[id(3), helpstring(&quot;Methode Add&quot;)] HRESULT Add([in] VARIANT *variant_element);
	};
</code></pre>
<p>Aufruf in VB</p>
<pre><code>Private Sub Command1_Click()
    Dim objAlgo As Algo
    Dim wert As Integer
    Dim i As Long

    'Set wert = Text1
     wert = 3

     Set objAlgo = New Algo
      objAlgo.Add wert
</code></pre>
<p>Danke <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/830290</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/830290</guid><dc:creator><![CDATA[c147258]]></dc:creator><pubDate>Wed, 13 Jul 2005 13:45:48 GMT</pubDate></item><item><title><![CDATA[Reply to C++ DLL - Visual Basic - übergabe der Var. on Mon, 18 Jul 2005 11:54:11 GMT]]></title><description><![CDATA[<p>Problem gelöst...jedoch schon wieder ein neues:</p>
<p>VB: Funktion von der C++ DLL wird aufgerufen und es wird ein Wert übergeben - jedoch sollte dann auch die Var return_var einen Wert von der FKT zurückbekommen...tuts aber nicht <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>
<pre><code>' Output:
    Dim szOutput As String
    Dim count As Variant

    szOutput = &quot;Output:&quot;

    Dim return_var As Variant
    For count = 0 To 3
    return_var = objAlgo.Key(count)
    szOutput = szOutput &amp; &quot; &quot; &amp; return_var
   Next

  MsgBox szOutput
</code></pre>
<p>C++ DLL:<br />
ALGO.CPP</p>
<pre><code>//
// Key
// Bestimmung des Datentyps des Arrays, welches 
// zuvor in einer Liste abgespeichert wurde
//

STDMETHODIMP CAlgo::Key(VARIANT *variant_key_in, VARIANT *variant_key_ret)
{
	switch(defDataType(&amp;listB-&gt;data))
	{
		case etInteger:
			//Integer 
			 variant_key_ret-&gt;iVal = array_int[variant_key_in-&gt;iVal];
			  break;
		default: break;
	}

	return 0;
}
</code></pre>
<p>test.idl</p>
<pre><code>[id(4), helpstring(&quot;Methode Key&quot;)] HRESULT Key([in] VARIANT *variant_key_in, [retval][out] VARIANT *variant_key_ret);
</code></pre>
<p>Algo.h</p>
<pre><code>STDMETHOD(Key)(VARIANT *variant_key_in, VARIANT *variant_key_ret);
</code></pre>
<p>test.h</p>
<pre><code>virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Key( 
            /* [in] */ VARIANT __RPC_FAR *variant_key_in,
            /* [out][retval] */ VARIANT __RPC_FAR *variant_key_ret) = 0;
</code></pre>
<p>Bekomme den genwünschten Wert nicht zurück, obwohl wenn ich es debugge der Wert in der C++ Fkt umgeschrieben wird - jeodch nicht ins VB zurück <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>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/833460</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/833460</guid><dc:creator><![CDATA[c147258]]></dc:creator><pubDate>Mon, 18 Jul 2005 11:54:11 GMT</pubDate></item><item><title><![CDATA[Reply to C++ DLL - Visual Basic - übergabe der Var. on Mon, 18 Jul 2005 12:54:46 GMT]]></title><description><![CDATA[<p>Es reicht nicht, mur den für den Typ passenden Wertmember zu setzen. Du musst auch den Typmember vt setzen.</p>
<p>Am Einfachsten geht das mit den Hilfsklassen für Variants. die kümmern sich um all das und haben Konstruktoren für praktisch alle VARIANT-Datentypen.</p>
<pre><code class="language-cpp">case etInteger:
{
    CComVariant var(array_int[variant_key_in-&gt;iVal]);
    var.Detach(variant_key_ret);
    break;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/833512</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/833512</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Mon, 18 Jul 2005 12:54:46 GMT</pubDate></item><item><title><![CDATA[Reply to C++ DLL - Visual Basic - übergabe der Var. on Mon, 18 Jul 2005 13:19:45 GMT]]></title><description><![CDATA[<p>Danke</p>
<p>hab es eingebunden - jedoch Fehler - fehlt mir noch irgendeine Header Datei oder ähnliches?</p>
<p>....Algo.cpp(111) : error C2361: Initialisierung von 'var' durch 'default'-Marke übersprungen<br />
......\Algo.cpp(108) : Siehe Deklaration von 'var'<br />
Fehler beim Ausführen von cl.exe.</p>
<p>so funkts jedoch:</p>
<pre><code>variant_key_ret-&gt;iVal = array_int[variant_key_in-&gt;iVal];
			variant_key_ret-&gt;vt = 2;
</code></pre>
<p>Aber trotzdem wäre das andere sicherlich eine bessere Lösung, bitte um &quot;Aufklärung&quot;<br />
<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="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/833537</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/833537</guid><dc:creator><![CDATA[c147258]]></dc:creator><pubDate>Mon, 18 Jul 2005 13:19:45 GMT</pubDate></item><item><title><![CDATA[Reply to C++ DLL - Visual Basic - übergabe der Var. on Mon, 18 Jul 2005 13:19:54 GMT]]></title><description><![CDATA[<p>c147258 schrieb:</p>
<blockquote>
<p>hab es eingebunden - jedoch Fehler - fehlt mir noch irgendeine Header Datei oder ähnliches?</p>
</blockquote>
<p>Vermutlich hast du die geschweiften Klammern im case-Block nicht übernommen. Wenn die fehlen, darfst du dort keine neuen Variablen definieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/833542</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/833542</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Mon, 18 Jul 2005 13:19:54 GMT</pubDate></item><item><title><![CDATA[Reply to C++ DLL - Visual Basic - übergabe der Var. on Mon, 18 Jul 2005 13:26:14 GMT]]></title><description><![CDATA[<p>MFK schrieb:</p>
<blockquote>
<p>Vermutlich hast du die geschweiften Klammern im case-Block nicht übernommen.</p>
</blockquote>
<p>Jop..das wars..Danke!</p>
<p>werd mich nun auf die String konvertierung &quot;lehnen&quot;....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/833548</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/833548</guid><dc:creator><![CDATA[c147258]]></dc:creator><pubDate>Mon, 18 Jul 2005 13:26:14 GMT</pubDate></item><item><title><![CDATA[Reply to C++ DLL - Visual Basic - übergabe der Var. on Tue, 19 Jul 2005 07:48:05 GMT]]></title><description><![CDATA[<p>Hätte einen Code, welchen ich von einem Programm übernommen habe, jedoch verstehe ich den Sinn nicht ganz, da erst ab dem 4ten Element reingeschrieben wird - dies hat sicherlich einen Grund aber welchen?<br />
(evtl. Sicherheit bzgl. Speicherüberschreibung?<br />
single hätte auch 4 Byte)</p>
<pre><code>/*
 * Konvertiert einen übergebenen BSTR nach (char *).
 * Der Speicher muß von der aufrufenden Funktion freigegeben werden
 */
char *GetLongBstr(BSTR str)
{
	static unsigned char *v;
	unsigned short i;
	unsigned short size;

	// Länge feststellen
	size = SysStringLen(str);
	v = new unsigned char[size+5];
	*(int*)v = size;

	// Kopieren
	for(i=0; i&lt;size; ++i) v[i+4] = (unsigned char)(((unsigned short *)str)[i]);

	// End markieren
	v[i+4] = 0;

	// Zeiger auf den String (ohne Längenangabe)zurückgeben
	return (char*)v;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/834082</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/834082</guid><dc:creator><![CDATA[c147258]]></dc:creator><pubDate>Tue, 19 Jul 2005 07:48:05 GMT</pubDate></item><item><title><![CDATA[Reply to C++ DLL - Visual Basic - übergabe der Var. on Tue, 19 Jul 2005 07:53:47 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">*(int*)v = size;
</code></pre>
<p>Weil er da wohl die Stringlänge reinschreibt. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/834084</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/834084</guid><dc:creator><![CDATA[Redhead]]></dc:creator><pubDate>Tue, 19 Jul 2005 07:53:47 GMT</pubDate></item><item><title><![CDATA[Reply to C++ DLL - Visual Basic - übergabe der Var. on Tue, 19 Jul 2005 08:29:00 GMT]]></title><description><![CDATA[<p>Ja, aber warum fängt er dann nicht mit den 0ten Element an?</p>
<p>Der erste Buchstabe hat Index(4) ....warum nicht Index(0) ?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/834108</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/834108</guid><dc:creator><![CDATA[c147258]]></dc:creator><pubDate>Tue, 19 Jul 2005 08:29:00 GMT</pubDate></item><item><title><![CDATA[Reply to C++ DLL - Visual Basic - übergabe der Var. on Wed, 20 Jul 2005 11:18:32 GMT]]></title><description><![CDATA[<p>Hallo hätte wieder eine Frage:</p>
<p>VB Programm aufruf:</p>
<pre><code>Dim feld(0 To 3) As Variant
   Set objAlgo = New Algo

   feld(0) = 4
   feld(1) = 2
   feld(2) = 3
   feld(3) = 1
   objAlgo.Add feld
</code></pre>
<p>Jetzt müsste ich unter C++ DLL das Array übergeben. Problem ist jedoch das die Funktion/Schnittstelle Add auch Werte wie Integer und Strings übergeben werden können, und somit fordert die FKT Add einen VARIANT Datentyp. Ist dies nun möglich das ich das Feld an den Variant Datentyp übergebe und später die Daten auslese oder ist es nur mit dem von dir geschriebenen SafeArray(<a href="http://www.overclockers.at" rel="nofollow">www.overclockers.at</a>) möglich? (Funktion muss gleich heißen!)</p>
<p>Wenn ich die ADD Funktion mit einem anderen zu erwartenden Parameter hinschreibe, dann kommt jedes Mal redefinition von Add.</p>
<p>Wäre um jede Hilfe dankbar...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/835195</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/835195</guid><dc:creator><![CDATA[c147258]]></dc:creator><pubDate>Wed, 20 Jul 2005 11:18:32 GMT</pubDate></item></channel></rss>