<?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[Playback Media -&amp;gt; put_playlist Fehler, bitte um Hilfe]]></title><description><![CDATA[<p>Ich hab hier irgendwo einen Fehler.<br />
Er kommt aber nicht beim Kompilieren, sondern erst zur Laufzeit</p>
<p>Das ist der Code:</p>
<pre><code class="language-cpp">HRESULT CFinalPCPDlg::PutPlayList(IN ITTerminal *pITTerminal,IN BSTR bstrFileName)
{
	//
	//check if really have a terminal
	//
	if(NULL == pITTerminal)
	{
		sendToOutputBox(&quot;PutPlayList: Check pITTerminal&quot;,S_FALSE);
		return E_UNEXPECTED;
	}

	//
    // Get ITMediaPlayback interface - only playback terminal object 
	// exposes this interface
	//
    ITMediaPlayback*    pMediaPlayback = NULL;

    HRESULT hr = pITTerminal-&gt;QueryInterface(
										IID_ITMediaPlayback,
										(void**)&amp;pMediaPlayback);

	sendToOutputBox(&quot;PutPlayList: QI ITMediaPlayback&quot;,hr);
	if(FAILED(hr))
	{
		return hr;
	}

	//
	//VARIANT to be passed to put_PlayList
	//
	VARIANT varPlaylist;
	VariantInit(&amp;varPlaylist);

	//
	//Prepare SAFEARRAYBOUND for SAFEARRAY
	//Put file name into array with one element
	//
    SAFEARRAYBOUND DimensionBounds;
    DimensionBounds.lLbound = 1;

	//
	//number of files in play list - modify for more files
	//
    DimensionBounds.cElements = 1;

    //
	// Put file name into array at index 1 - see lLbound
	//
    long lArrayPos = 1;

	//
	//variant that will hold the BSTR - it will be added to SAFEARRAY
	//
    VARIANT* pvarArrayEntry = new VARIANT;
    if( pvarArrayEntry == NULL)
    {
		sendToOutputBox(&quot;PutPlayList: new VARIANT&quot;,hr);
        return E_OUTOFMEMORY;
    }
	VariantInit(pvarArrayEntry);

    //
	// Create SAFEARRAY
	//
    SAFEARRAY *pPlayListArray = NULL;
    pPlayListArray = SafeArrayCreate( VT_VARIANT, 1, &amp;DimensionBounds);
    if( pPlayListArray == NULL)
    {
		sendToOutputBox(&quot;PutPlayList: save Array&quot;,hr);
		delete pvarArrayEntry;
        return E_OUTOFMEMORY;
    }

// ------ HIER KOMMT ER NOCH OHNE PROBLEME AN

	//
	//repeat this for each file you want to add
	//you need to increment lArrayPos
	//
    pvarArrayEntry-&gt;vt = VT_BSTR;
    pvarArrayEntry-&gt;bstrVal = ::SysAllocString(bstrFileName);
    SafeArrayPutElement( pPlayListArray, &amp;lArrayPos, pvarArrayEntry);
	VariantClear(pvarArrayEntry);

	//
	//prepare the variant for put_PlayList
	//
    V_VT(&amp;varPlaylist) = VT_ARRAY | VT_VARIANT;
    V_ARRAY(&amp;varPlaylist) = pPlayListArray;

	//
	//finally put play list
	//

// ------ DER NÄCHSTE BEFEHL ERZEUGT EINEN FEHLER 
    hr = pMediaPlayback-&gt;put_PlayList(varPlaylist);

    if(FAILED(hr))
    {
		sendToOutputBox(&quot;PutPlayList: Put into playlist&quot;,hr);
		delete pvarArrayEntry;
        return E_OUTOFMEMORY;
    }

	//
	//clean up
	//
	delete pvarArrayEntry;
    pMediaPlayback-&gt;Release();
	VariantClear(&amp;varPlaylist);

    return hr;
}
</code></pre>
<p>Also irgendwo ziwschen den beiden //------------<br />
ist er Fehler, ich habe schon die MSDN von vorne bis hinten x-mal durchforstet, und so sollte es gehen....</p>
<p>Was mich verwundert: Wenn ich das Beispiel Programm mittels NMAKE<br />
der Mircrosoft SDK kompiliere, dann funktionierts.<br />
Kompiliere ich das Beispiel mit Visual Studio, kommen keine Fehler (die .EXE Dateien haben auch unterschiedliche Größen) und bei der Laufzeit dann die Fehlermeldung das er nicht put_playlist machen konnte....</p>
<p>Was könnte das Problem sein? Hat jemand von euch irgendeine Vermutung?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/189365/playback-media-gt-put_playlist-fehler-bitte-um-hilfe</link><generator>RSS for Node</generator><lastBuildDate>Wed, 01 Jul 2026 12:05:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/189365.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 12 Aug 2007 04:03:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Playback Media -&amp;gt; put_playlist Fehler, bitte um Hilfe on Sun, 12 Aug 2007 04:03:52 GMT]]></title><description><![CDATA[<p>Ich hab hier irgendwo einen Fehler.<br />
Er kommt aber nicht beim Kompilieren, sondern erst zur Laufzeit</p>
<p>Das ist der Code:</p>
<pre><code class="language-cpp">HRESULT CFinalPCPDlg::PutPlayList(IN ITTerminal *pITTerminal,IN BSTR bstrFileName)
{
	//
	//check if really have a terminal
	//
	if(NULL == pITTerminal)
	{
		sendToOutputBox(&quot;PutPlayList: Check pITTerminal&quot;,S_FALSE);
		return E_UNEXPECTED;
	}

	//
    // Get ITMediaPlayback interface - only playback terminal object 
	// exposes this interface
	//
    ITMediaPlayback*    pMediaPlayback = NULL;

    HRESULT hr = pITTerminal-&gt;QueryInterface(
										IID_ITMediaPlayback,
										(void**)&amp;pMediaPlayback);

	sendToOutputBox(&quot;PutPlayList: QI ITMediaPlayback&quot;,hr);
	if(FAILED(hr))
	{
		return hr;
	}

	//
	//VARIANT to be passed to put_PlayList
	//
	VARIANT varPlaylist;
	VariantInit(&amp;varPlaylist);

	//
	//Prepare SAFEARRAYBOUND for SAFEARRAY
	//Put file name into array with one element
	//
    SAFEARRAYBOUND DimensionBounds;
    DimensionBounds.lLbound = 1;

	//
	//number of files in play list - modify for more files
	//
    DimensionBounds.cElements = 1;

    //
	// Put file name into array at index 1 - see lLbound
	//
    long lArrayPos = 1;

	//
	//variant that will hold the BSTR - it will be added to SAFEARRAY
	//
    VARIANT* pvarArrayEntry = new VARIANT;
    if( pvarArrayEntry == NULL)
    {
		sendToOutputBox(&quot;PutPlayList: new VARIANT&quot;,hr);
        return E_OUTOFMEMORY;
    }
	VariantInit(pvarArrayEntry);

    //
	// Create SAFEARRAY
	//
    SAFEARRAY *pPlayListArray = NULL;
    pPlayListArray = SafeArrayCreate( VT_VARIANT, 1, &amp;DimensionBounds);
    if( pPlayListArray == NULL)
    {
		sendToOutputBox(&quot;PutPlayList: save Array&quot;,hr);
		delete pvarArrayEntry;
        return E_OUTOFMEMORY;
    }

// ------ HIER KOMMT ER NOCH OHNE PROBLEME AN

	//
	//repeat this for each file you want to add
	//you need to increment lArrayPos
	//
    pvarArrayEntry-&gt;vt = VT_BSTR;
    pvarArrayEntry-&gt;bstrVal = ::SysAllocString(bstrFileName);
    SafeArrayPutElement( pPlayListArray, &amp;lArrayPos, pvarArrayEntry);
	VariantClear(pvarArrayEntry);

	//
	//prepare the variant for put_PlayList
	//
    V_VT(&amp;varPlaylist) = VT_ARRAY | VT_VARIANT;
    V_ARRAY(&amp;varPlaylist) = pPlayListArray;

	//
	//finally put play list
	//

// ------ DER NÄCHSTE BEFEHL ERZEUGT EINEN FEHLER 
    hr = pMediaPlayback-&gt;put_PlayList(varPlaylist);

    if(FAILED(hr))
    {
		sendToOutputBox(&quot;PutPlayList: Put into playlist&quot;,hr);
		delete pvarArrayEntry;
        return E_OUTOFMEMORY;
    }

	//
	//clean up
	//
	delete pvarArrayEntry;
    pMediaPlayback-&gt;Release();
	VariantClear(&amp;varPlaylist);

    return hr;
}
</code></pre>
<p>Also irgendwo ziwschen den beiden //------------<br />
ist er Fehler, ich habe schon die MSDN von vorne bis hinten x-mal durchforstet, und so sollte es gehen....</p>
<p>Was mich verwundert: Wenn ich das Beispiel Programm mittels NMAKE<br />
der Mircrosoft SDK kompiliere, dann funktionierts.<br />
Kompiliere ich das Beispiel mit Visual Studio, kommen keine Fehler (die .EXE Dateien haben auch unterschiedliche Größen) und bei der Laufzeit dann die Fehlermeldung das er nicht put_playlist machen konnte....</p>
<p>Was könnte das Problem sein? Hat jemand von euch irgendeine Vermutung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1343028</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1343028</guid><dc:creator><![CDATA[Multiplex]]></dc:creator><pubDate>Sun, 12 Aug 2007 04:03:52 GMT</pubDate></item></channel></rss>