<?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[Problem mit VARIANT-array]]></title><description><![CDATA[<p>Hi Leute,<br />
Ich hab mal wieder ein Problem:<br />
Ich habe hier ne Funktion (eines COM-Objektes) die erwartet als ersten Parameter einen VARIANT. In der Beschreibung zu der Funktion steht: &quot;Specifies an array of stroke IDs&quot;<br />
Also habe ich versucht ein Array anzulegen. Für den Anfang nur mit einem Element:</p>
<pre><code class="language-cpp">long ID = GetID();		
SAFEARRAYBOUND rgsabound[1];
rgsabound[0].lLbound = 0;
rgsabound[0].cElements = 1;

long Indicies[1];
Indicies[0]=0;
SAFEARRAY *ar = SafeArrayCreate(VT_I4,1,rgsabound);
CComVariant varID(ID,VT_I4);
SafeArrayPutElement(ar,Indicies,&amp;varID);
VARIANT vr;
vr.parray=ar;
vr.vt= VT_I4|VT_ARRAY;
</code></pre>
<p>ID ist die stroke ID.</p>
<p>Die Funktion, der ich den VARIANT vr jetzt übergeb gibt aber immer zurück, dass was nicht stimmt.<br />
Liegt das an meinem Array? Hab nämlich noch nie was mit VARIANTs gemacht, deshalb wäre es gut möglich, dass ich hierbei alles falsch mach.</p>
<p>P.S. In der C#-Version der Funktion ist der Parameter als &quot;int[] ids&quot; definiert, deswegen habe ich oben vr.vt = VT_I4|VT_ARRAY gemacht.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/64164/problem-mit-variant-array</link><generator>RSS for Node</generator><lastBuildDate>Tue, 07 Apr 2026 11:42:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/64164.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 08 Feb 2004 17:10:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit VARIANT-array on Sun, 08 Feb 2004 17:10:54 GMT]]></title><description><![CDATA[<p>Hi Leute,<br />
Ich hab mal wieder ein Problem:<br />
Ich habe hier ne Funktion (eines COM-Objektes) die erwartet als ersten Parameter einen VARIANT. In der Beschreibung zu der Funktion steht: &quot;Specifies an array of stroke IDs&quot;<br />
Also habe ich versucht ein Array anzulegen. Für den Anfang nur mit einem Element:</p>
<pre><code class="language-cpp">long ID = GetID();		
SAFEARRAYBOUND rgsabound[1];
rgsabound[0].lLbound = 0;
rgsabound[0].cElements = 1;

long Indicies[1];
Indicies[0]=0;
SAFEARRAY *ar = SafeArrayCreate(VT_I4,1,rgsabound);
CComVariant varID(ID,VT_I4);
SafeArrayPutElement(ar,Indicies,&amp;varID);
VARIANT vr;
vr.parray=ar;
vr.vt= VT_I4|VT_ARRAY;
</code></pre>
<p>ID ist die stroke ID.</p>
<p>Die Funktion, der ich den VARIANT vr jetzt übergeb gibt aber immer zurück, dass was nicht stimmt.<br />
Liegt das an meinem Array? Hab nämlich noch nie was mit VARIANTs gemacht, deshalb wäre es gut möglich, dass ich hierbei alles falsch mach.</p>
<p>P.S. In der C#-Version der Funktion ist der Parameter als &quot;int[] ids&quot; definiert, deswegen habe ich oben vr.vt = VT_I4|VT_ARRAY gemacht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/454572</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/454572</guid><dc:creator><![CDATA[dEUs]]></dc:creator><pubDate>Sun, 08 Feb 2004 17:10:54 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit VARIANT-array on Mon, 09 Feb 2004 10:45:23 GMT]]></title><description><![CDATA[<p>dEUs schrieb:</p>
<blockquote>
<pre><code class="language-cpp">CComVariant varID(ID,VT_I4);
SafeArrayPutElement(ar,Indicies,&amp;varID);
</code></pre>
</blockquote>
<p>Der 'Pointer to the data to assign to the array' ist ein VARIANT-Pointer. Du wolltest doch aber einen Integer speichern. Das sollte eher so aussehen:</p>
<pre><code class="language-cpp">SafeArrayPutElement(ar,Indicies,&amp;ID);
</code></pre>
<p>BTW: Für solche Arrays finde ich <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/automat/htm/chap7_4w8i.asp?frame=true" rel="nofollow">SafeArrayCreateVector</a> ganz praktisch. Du sparst Dir dann das Gedödel mit der SAFEARRAYBOUND-Struktur.</p>
<p>dEUs schrieb:</p>
<blockquote>
<p>Die Funktion, der ich den VARIANT vr jetzt übergeb gibt aber immer zurück, dass was nicht stimmt.</p>
</blockquote>
<p>Nur nicht zuviel verraten. Ich für meinen Teil habe jedenfalls an dieser Stelle den Fehlercode erwartet. Ist der wirklich so geheim?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/454970</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/454970</guid><dc:creator><![CDATA[-King-]]></dc:creator><pubDate>Mon, 09 Feb 2004 10:45:23 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit VARIANT-array on Mon, 09 Feb 2004 16:32:53 GMT]]></title><description><![CDATA[<p>Oh, die Funktion sieht schön aus <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="🙂"
    /> Danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>Der Rückgabewert ist:<br />
<strong>TPC_E_INVALID_STROKE</strong> - Stroke IDs that do not exist were passed to the method.</p>
<p>Da das ein spezieller des SDKs ist, habe ich ihn nur beschrieben ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/455321</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/455321</guid><dc:creator><![CDATA[dEUs]]></dc:creator><pubDate>Mon, 09 Feb 2004 16:32:53 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit VARIANT-array on Mon, 09 Feb 2004 19:36:28 GMT]]></title><description><![CDATA[<p>Also darf ich davon ausgeheen, daß es jetzt funktioniert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/455496</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/455496</guid><dc:creator><![CDATA[-King-]]></dc:creator><pubDate>Mon, 09 Feb 2004 19:36:28 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit VARIANT-array on Mon, 09 Feb 2004 19:37:26 GMT]]></title><description><![CDATA[<p>Darfst du <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="🙂"
    /><br />
Nochmals danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/455497</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/455497</guid><dc:creator><![CDATA[dEUs]]></dc:creator><pubDate>Mon, 09 Feb 2004 19:37:26 GMT</pubDate></item></channel></rss>