<?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 MFC Anwendung Hilfsklasse behält die Daten nicht bei]]></title><description><![CDATA[<p>Hallo,<br />
ich versuche mal, mich so verständlich wie möglich auszudrücken.<br />
Der Programmcode ist ziemlich gekürzt.</p>
<p>Ich habe eine Klasse &quot;daten&quot; erstellt:</p>
<pre><code class="language-cpp">class CDaten  
{
	public:
		CDaten();	// Konstruktor
		virtual ~CDaten();	// Destruktor

		// Alle benötigten Variablen aus der Eingabemaske &quot;Netzeingabe&quot;
		double d_nennspannung;
		double d_ss1;
		double d_ss2;
		double d_r_ss1_ss2;
		double d_r_ss1_ss3;
		double d_r_ss2_ss3;

		// Nun alle Variablen, die für die Ausgabe notwendig sind
		double d_U1, d_U2;
		double d_I12, d_I13, d_I23;

[...]
</code></pre>
<p>Hier befindet sich unter anderem die Variable d_I12, auf die ich im Hauptformular zugreifen möchte. Dort möchte ich eine Zeichnung erstellen und benötige den Wert in dieser Variable:</p>
<pre><code class="language-cpp">CString Strom12 = &quot;&quot;;

void CPR11View::OnDraw(CDC* pDC)
{
	CPR11Doc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);

	CString strText;

	if(bAnzeige)
	{

		CPen Blau, Rot, Gruen, Schwarz;
		Blau.CreatePen(PS_SOLID,2,RGB(83, 134, 139));
		Rot.CreatePen(PS_SOLID,4,RGB(139, 26, 26));
		Gruen.CreatePen(PS_SOLID,3,RGB(69, 139, 0));
		Schwarz.CreatePen(PS_SOLID,4,RGB(0,0,0));

		pDC-&gt;SelectObject(&amp;Schwarz);
		pDC-&gt;Rectangle(1,1,999,599);	// Rahmen

		// I12
		Strom12.Format(_T(&quot;%5.5f A&quot;),pDoc-&gt;daten.d_I12);
		pDC-&gt;TextOut(300,420,Strom12);
</code></pre>
<p>So gebe ich die Variable aus.</p>
<p>Nachfolgend die Funktion in der ich daten.d_I12 speichere:</p>
<pre><code class="language-cpp">void CNetz::OnOK() 
{

	// Wir befinden uns im Fenster Netzeingabe. 
	// OK-Button wurde gedrückt -&gt; Verarbeitung/Speichern der Variablen in der 
	// Hilfsklase CDaten -&gt; Instanz &quot;daten&quot;
	CString strText;

	// ----------------------
	// Variablendeklarationen
	// ----------------------

	double G12, G13, G23;	// Leitwerte
	double I;				// Gesamtstrom
	double I12, I13, I23;	// Strangströme
	double U1, U2;			// Spannungen aus Knotenpot-Verfahren
	double phi1, phi2;
	double P;				// Leitungsverluste
	double dG;				// Determinante der Leitwertmatrix (skalarer Zahlenwert)
	double dGinv;			// entspricht 1 / dG

	// Werte aus Formular in Hilfsklasse &quot;daten&quot; speichern
	UpdateData(true);
				daten.d_ss1 = m_ss1;
				daten.d_ss2 = m_ss2;
				daten.d_nennspannung = m_nennspannung;
				daten.c_netzbeschreibung = m_netzbeschreibung;
				daten.d_r_ss1_ss2 = m_ss1_ss2;
				daten.d_r_ss1_ss3 = m_ss1_ss3;
				daten.d_r_ss2_ss3 = m_ss2_ss3;
	UpdateData(false);		

		// Gesamtstrom errechnen
		I = m_ss1 + m_ss2;

		// Leitwerte ermitteln für Knotenpot-Verfahren
		G12 = 1 / m_ss1_ss2;
		G13 = 1 / m_ss1_ss3;
		G23 = 1 / m_ss2_ss3;

		// Knoten 3 ist auf Masse gelegt. Aus Leitwertmatrix 3x3 wird 2x2!!!

		// Determinante bilden
		dG = ( (G12+G13) * (G12+G23) ) - ( (-G12) * (-G12) );
		dGinv = 1 / dG;	// invertieren

		// Potentiale berechnen
		phi1 = dGinv * (G12 + G23) * m_ss1 - (dGinv * (-G12)  * m_ss2 );
		phi2 = dGinv * (G12 + G13) * m_ss2 - (dGinv * (-G12)  * m_ss1 );

		// 
		U1 = ((m_nennspannung * 1000) - (phi1 * sqrt(3))) / 1000;
		U2 = ((m_nennspannung * 1000) - (phi2 * sqrt(3))) / 1000;

		// Strangströme
		I12 = ((phi2 - phi1) * G12);
		I13 = (phi1) * G13;
		I23 = (phi2) * G23;

		daten.d_I12 = I12;
		daten.d_I13 = I13;
		daten.d_I23 = I23;
[...]
</code></pre>
<p>Das Problem ist, dass der Wert nicht gespeichert wird. Könnt Ihr mir sagen, wieso?</p>
<p>Ich hoffe, das ist einigermaßen verständlich ausgedrückt.</p>
<p>Gruß,<br />
Stefan</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/302842/problem-mfc-anwendung-hilfsklasse-behält-die-daten-nicht-bei</link><generator>RSS for Node</generator><lastBuildDate>Tue, 11 Aug 2026 03:12:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/302842.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 28 Apr 2012 15:54:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem MFC Anwendung Hilfsklasse behält die Daten nicht bei on Sat, 28 Apr 2012 15:54:31 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich versuche mal, mich so verständlich wie möglich auszudrücken.<br />
Der Programmcode ist ziemlich gekürzt.</p>
<p>Ich habe eine Klasse &quot;daten&quot; erstellt:</p>
<pre><code class="language-cpp">class CDaten  
{
	public:
		CDaten();	// Konstruktor
		virtual ~CDaten();	// Destruktor

		// Alle benötigten Variablen aus der Eingabemaske &quot;Netzeingabe&quot;
		double d_nennspannung;
		double d_ss1;
		double d_ss2;
		double d_r_ss1_ss2;
		double d_r_ss1_ss3;
		double d_r_ss2_ss3;

		// Nun alle Variablen, die für die Ausgabe notwendig sind
		double d_U1, d_U2;
		double d_I12, d_I13, d_I23;

[...]
</code></pre>
<p>Hier befindet sich unter anderem die Variable d_I12, auf die ich im Hauptformular zugreifen möchte. Dort möchte ich eine Zeichnung erstellen und benötige den Wert in dieser Variable:</p>
<pre><code class="language-cpp">CString Strom12 = &quot;&quot;;

void CPR11View::OnDraw(CDC* pDC)
{
	CPR11Doc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);

	CString strText;

	if(bAnzeige)
	{

		CPen Blau, Rot, Gruen, Schwarz;
		Blau.CreatePen(PS_SOLID,2,RGB(83, 134, 139));
		Rot.CreatePen(PS_SOLID,4,RGB(139, 26, 26));
		Gruen.CreatePen(PS_SOLID,3,RGB(69, 139, 0));
		Schwarz.CreatePen(PS_SOLID,4,RGB(0,0,0));

		pDC-&gt;SelectObject(&amp;Schwarz);
		pDC-&gt;Rectangle(1,1,999,599);	// Rahmen

		// I12
		Strom12.Format(_T(&quot;%5.5f A&quot;),pDoc-&gt;daten.d_I12);
		pDC-&gt;TextOut(300,420,Strom12);
</code></pre>
<p>So gebe ich die Variable aus.</p>
<p>Nachfolgend die Funktion in der ich daten.d_I12 speichere:</p>
<pre><code class="language-cpp">void CNetz::OnOK() 
{

	// Wir befinden uns im Fenster Netzeingabe. 
	// OK-Button wurde gedrückt -&gt; Verarbeitung/Speichern der Variablen in der 
	// Hilfsklase CDaten -&gt; Instanz &quot;daten&quot;
	CString strText;

	// ----------------------
	// Variablendeklarationen
	// ----------------------

	double G12, G13, G23;	// Leitwerte
	double I;				// Gesamtstrom
	double I12, I13, I23;	// Strangströme
	double U1, U2;			// Spannungen aus Knotenpot-Verfahren
	double phi1, phi2;
	double P;				// Leitungsverluste
	double dG;				// Determinante der Leitwertmatrix (skalarer Zahlenwert)
	double dGinv;			// entspricht 1 / dG

	// Werte aus Formular in Hilfsklasse &quot;daten&quot; speichern
	UpdateData(true);
				daten.d_ss1 = m_ss1;
				daten.d_ss2 = m_ss2;
				daten.d_nennspannung = m_nennspannung;
				daten.c_netzbeschreibung = m_netzbeschreibung;
				daten.d_r_ss1_ss2 = m_ss1_ss2;
				daten.d_r_ss1_ss3 = m_ss1_ss3;
				daten.d_r_ss2_ss3 = m_ss2_ss3;
	UpdateData(false);		

		// Gesamtstrom errechnen
		I = m_ss1 + m_ss2;

		// Leitwerte ermitteln für Knotenpot-Verfahren
		G12 = 1 / m_ss1_ss2;
		G13 = 1 / m_ss1_ss3;
		G23 = 1 / m_ss2_ss3;

		// Knoten 3 ist auf Masse gelegt. Aus Leitwertmatrix 3x3 wird 2x2!!!

		// Determinante bilden
		dG = ( (G12+G13) * (G12+G23) ) - ( (-G12) * (-G12) );
		dGinv = 1 / dG;	// invertieren

		// Potentiale berechnen
		phi1 = dGinv * (G12 + G23) * m_ss1 - (dGinv * (-G12)  * m_ss2 );
		phi2 = dGinv * (G12 + G13) * m_ss2 - (dGinv * (-G12)  * m_ss1 );

		// 
		U1 = ((m_nennspannung * 1000) - (phi1 * sqrt(3))) / 1000;
		U2 = ((m_nennspannung * 1000) - (phi2 * sqrt(3))) / 1000;

		// Strangströme
		I12 = ((phi2 - phi1) * G12);
		I13 = (phi1) * G13;
		I23 = (phi2) * G23;

		daten.d_I12 = I12;
		daten.d_I13 = I13;
		daten.d_I23 = I23;
[...]
</code></pre>
<p>Das Problem ist, dass der Wert nicht gespeichert wird. Könnt Ihr mir sagen, wieso?</p>
<p>Ich hoffe, das ist einigermaßen verständlich ausgedrückt.</p>
<p>Gruß,<br />
Stefan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2206428</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2206428</guid><dc:creator><![CDATA[Stefan8444]]></dc:creator><pubDate>Sat, 28 Apr 2012 15:54:31 GMT</pubDate></item></channel></rss>