<?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 new[ ], hilfe?!]]></title><description><![CDATA[<p>Hi,<br />
folgendes:<br />
*<br />
- ich habe einen Pointer POINT *pt = 0<br />
- in einer Schleife lasse ich den Pointer definieren pt = new POINT[ count ]<br />
- anschliessend möchte ich nun das eben angelegte Array auf das pt zeigt füllen<br />
- zu guter letzt wird der Speicher wieder frei gegeben und das Spiel begint erneut<br />
*</p>
<p>Hier mal der code:</p>
<pre><code class="language-cpp">void CLineChart::m_DrawAllGraphs( ) {

    HDC hDC = 0;
    HPEN hGraphPen = CreatePen( PS_SOLID, 2, RGB( 255, 0, 0 ) );
    CGraph cTemp;
    POINT *ptGraph = 0;
    long lValue = 0;

    // ***** Get desc window dc *****
    hDC = GetDC( this-&gt;m_hDescWindow );

    SetViewportOrgEx( hDC, this-&gt;m_ChartRect.left, this-&gt;m_ChartRect.bottom, 0 );

    //SelectObject( hDC, hGraphPen );

    for( this-&gt;m_GraphIter = this-&gt;m_GraphContainer.begin( ); this-&gt;m_GraphIter != this-&gt;m_GraphContainer.end( ); this-&gt;m_GraphIter++ ) {

        // ***** Current graph object *****
        cTemp = *this-&gt;m_GraphIter;

        // ***** Get graph points *****
        ptGraph = new POINT[ cTemp.m_GetCounter( ) ];

        cTemp.m_ValueIter = cTemp.m_lGraphValues.begin( );
        for( int i = 0; i &lt; cTemp.m_GetCounter( ); i++ ) {

            lValue = *cTemp.m_ValueIter++;
            ptGraph[ i ].x = ( ( this-&gt;m_ChartRect.right / this-&gt;m_iXPeak ) * ( i + 1 ) );
            if( lValue == 0 ) {

                ptGraph[ i ].y = this-&gt;m_ChartRect.bottom;
            }
            else {

                ptGraph[ i ].y = -( this-&gt;m_ChartRect.bottom - ( this-&gt;m_ChartRect.bottom / lValue ) );
            }
        }

        // ***** Draw it *****
        ::Polyline( hDC, (const POINT*)&amp;ptGraph, cTemp.m_GetCounter( ) );

        // ***** clear ptGraph *****
        delete[ ] ptGraph;
    }
    // ***** Release dc *****
    ReleaseDC( this-&gt;m_hDescWindow, hDC );

    DeleteObject( hGraphPen );
}
</code></pre>
<p>Ich habe das Problem, wenn ich das Ding zeichnen lass will sehe ich keine Linie, also muss ich ja hier irgendwo nen Fehler gemacht haben. Die Werte fuer x und y werden berechnet aber ich glaube das es was mit dem Pointer zu tun hat.</p>
<p>Koennt ihr mir evtl. sagen ob ich da irgendwo nen Fehler drin hab?</p>
<p>Gruß Tobi.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/201475/problem-mit-new-hilfe</link><generator>RSS for Node</generator><lastBuildDate>Tue, 06 Oct 2026 00:43:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/201475.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 30 Dec 2007 15:47:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit new[ ], hilfe?! on Sun, 30 Dec 2007 15:47:28 GMT]]></title><description><![CDATA[<p>Hi,<br />
folgendes:<br />
*<br />
- ich habe einen Pointer POINT *pt = 0<br />
- in einer Schleife lasse ich den Pointer definieren pt = new POINT[ count ]<br />
- anschliessend möchte ich nun das eben angelegte Array auf das pt zeigt füllen<br />
- zu guter letzt wird der Speicher wieder frei gegeben und das Spiel begint erneut<br />
*</p>
<p>Hier mal der code:</p>
<pre><code class="language-cpp">void CLineChart::m_DrawAllGraphs( ) {

    HDC hDC = 0;
    HPEN hGraphPen = CreatePen( PS_SOLID, 2, RGB( 255, 0, 0 ) );
    CGraph cTemp;
    POINT *ptGraph = 0;
    long lValue = 0;

    // ***** Get desc window dc *****
    hDC = GetDC( this-&gt;m_hDescWindow );

    SetViewportOrgEx( hDC, this-&gt;m_ChartRect.left, this-&gt;m_ChartRect.bottom, 0 );

    //SelectObject( hDC, hGraphPen );

    for( this-&gt;m_GraphIter = this-&gt;m_GraphContainer.begin( ); this-&gt;m_GraphIter != this-&gt;m_GraphContainer.end( ); this-&gt;m_GraphIter++ ) {

        // ***** Current graph object *****
        cTemp = *this-&gt;m_GraphIter;

        // ***** Get graph points *****
        ptGraph = new POINT[ cTemp.m_GetCounter( ) ];

        cTemp.m_ValueIter = cTemp.m_lGraphValues.begin( );
        for( int i = 0; i &lt; cTemp.m_GetCounter( ); i++ ) {

            lValue = *cTemp.m_ValueIter++;
            ptGraph[ i ].x = ( ( this-&gt;m_ChartRect.right / this-&gt;m_iXPeak ) * ( i + 1 ) );
            if( lValue == 0 ) {

                ptGraph[ i ].y = this-&gt;m_ChartRect.bottom;
            }
            else {

                ptGraph[ i ].y = -( this-&gt;m_ChartRect.bottom - ( this-&gt;m_ChartRect.bottom / lValue ) );
            }
        }

        // ***** Draw it *****
        ::Polyline( hDC, (const POINT*)&amp;ptGraph, cTemp.m_GetCounter( ) );

        // ***** clear ptGraph *****
        delete[ ] ptGraph;
    }
    // ***** Release dc *****
    ReleaseDC( this-&gt;m_hDescWindow, hDC );

    DeleteObject( hGraphPen );
}
</code></pre>
<p>Ich habe das Problem, wenn ich das Ding zeichnen lass will sehe ich keine Linie, also muss ich ja hier irgendwo nen Fehler gemacht haben. Die Werte fuer x und y werden berechnet aber ich glaube das es was mit dem Pointer zu tun hat.</p>
<p>Koennt ihr mir evtl. sagen ob ich da irgendwo nen Fehler drin hab?</p>
<p>Gruß Tobi.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1428091</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1428091</guid><dc:creator><![CDATA[T0bi]]></dc:creator><pubDate>Sun, 30 Dec 2007 15:47:28 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit new[ ], hilfe?! on Sun, 30 Dec 2007 15:52:26 GMT]]></title><description><![CDATA[<p>Hm, wenn ich des***(const POINT*)&amp;*** in Zeile 40 weg nehme, dann gehts, aber wieso?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1428092</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1428092</guid><dc:creator><![CDATA[T0bi]]></dc:creator><pubDate>Sun, 30 Dec 2007 15:52:26 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit new[ ], hilfe?! on Sun, 30 Dec 2007 16:21:49 GMT]]></title><description><![CDATA[<p>Du nimmst die Adresse eines Zeigers (das ergibt einen Doppelzeiger), und castest ihn dann wieder in einen einfachen Zeiger, damit nimmst Du dem Compiler jegliche Möglichkeit, Dich vor dem Fehler zu warnen (ein Cast sagt aus &quot;ich weiss es besser als Du, lieber Compiler&quot;). Warum castest Du dort überhaupt?</p>
<p>Nunja, wie gesagt ist ptGraph bereits ein Zeiger. Da die Funktion Polyline offenbar einen Zeiger entgegennimmt, darfst Du von dem Zeiger nicht nochmal die Adresse bilden. Und merke: Niemals casten, wenn Du nicht absolut weisst a) warum Du casten musst und b) was Du da castest. <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/1428109</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1428109</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Sun, 30 Dec 2007 16:21:49 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit new[ ], hilfe?! on Mon, 31 Dec 2007 11:03:48 GMT]]></title><description><![CDATA[<p>Hmm ein paar Sachen verändert:</p>
<pre><code class="language-cpp">void CLineChart::DrawAllGraphs() 
{
	HDC hDC(GetDC(m_hDescWnd));
    SetViewportOrgEx(hDC, m_ChartRect.left, m_ChartRect.bottom, NULL);

	HPEN hGraphPen(CreatePen(PS_SOLID, 2, RGB( 255, 0, 0 )));
	const HGDIOBJ hOldPen(SelectObject(hDC, hGraphPen));

    for (m_GraphIter = m_GraphContainer.begin(); m_GraphIter != m_GraphContainer.end( ); ++m_GraphIter) 
	{
		CGraph&amp; tmp(*m_GraphIter);

		const std::size_t count(tmp.GetCounter());
        POINT* ptGraph(new POINT[count]);

        tmp.m_ValueIter = tmp.m_lGraphValues.begin();

		for (std::size_t i(0); i &lt; count; ++i) 
		{
			const long value(tmp-&gt;m_ValueIter++);
            ptGraph[i].x = ((m_ChartRect.right / m_iXPeak) * (i + 1));
			ptGraph[i].y = (value == 0 ? m_ChartRect.bottom : -m_ChartRect.bottom + (m_ChartRect.bottom / value));
		}

        Polyline(hDC, ptGraph, count);
		delete[ ] ptGraph;
    }

	SelectObject(hDC, hOldPen);
	DeleteObject(hGraphPen);
	ReleaseDC(m_hDescWnd, hDC); 
}
</code></pre>
<p>1. Warum kopierst du dein CGraph in cTemp?<br />
2. ++x sollte x++ vorgezogen werden, es sei denn, man möchte dessen Effekt nutzen, was in einer for-Schleife allerdings äußerst unwahrscheinlich ist <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="😉"
    /><br />
3. Werte die du öffters brauchst, könntest du sinnvoller weiße in einer Konstanten zwischenspeichern.<br />
4. Wenn du einen Wertebereich von &gt;0 haben willst, dann sag dem Compiler das auch (unsigned)<br />
5. Man hinterlässt einen DC immer im Zustand wie er vorher war(also selben Stifte usw.)<br />
6. Warum legst du Variablen schon im Funktionskopf an? Wenn Sie bsw. durch iwelche Bedingungen NIE gebraucht werden, da die Funktion vorher verlassen wird?<br />
7. Warum sind deine Iteratorn Klassenvariablen?!<br />
8. Ein m_ vor einer Memberfunktion ... Nuja, merkwürdiger Stil <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/1428463</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1428463</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Mon, 31 Dec 2007 11:03:48 GMT</pubDate></item></channel></rss>