Problem MFC Anwendung Hilfsklasse behält die Daten nicht bei
-
Hallo,
ich versuche mal, mich so verständlich wie möglich auszudrücken.
Der Programmcode ist ziemlich gekürzt.Ich habe eine Klasse "daten" erstellt:
class CDaten { public: CDaten(); // Konstruktor virtual ~CDaten(); // Destruktor // Alle benötigten Variablen aus der Eingabemaske "Netzeingabe" 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; [...]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:
CString Strom12 = ""; 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->SelectObject(&Schwarz); pDC->Rectangle(1,1,999,599); // Rahmen // I12 Strom12.Format(_T("%5.5f A"),pDoc->daten.d_I12); pDC->TextOut(300,420,Strom12);So gebe ich die Variable aus.
Nachfolgend die Funktion in der ich daten.d_I12 speichere:
void CNetz::OnOK() { // Wir befinden uns im Fenster Netzeingabe. // OK-Button wurde gedrückt -> Verarbeitung/Speichern der Variablen in der // Hilfsklase CDaten -> Instanz "daten" 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 "daten" 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; [...]Das Problem ist, dass der Wert nicht gespeichert wird. Könnt Ihr mir sagen, wieso?
Ich hoffe, das ist einigermaßen verständlich ausgedrückt.
Gruß,
Stefan