von überall auf eine Variable zugreiffen



  • Hi

    Ich habe folgendes Problem.
    Ich habe 3 verschiedene Dialoge.
    Ich möchte nun eine Variable haben (Globale), welche ich von jedem Dialog aus ansprechen kann. (Das ganze geht ist für Texte, die der Benutzer in einem Dialog eigibt und dann in einem anderen Dialog-->Fukntion weiterverwendet werden)
    Ich habe bereits daran gedacht es über eine Datei zu lösen (das ganz in eine Datei schreiben und dann in der Funktion wieder einlesen) Dies ist mir aber zu kompliziert!

    Kann mir jemand sagen, wie ich diese Problem lösen kann?



  • Hallo,
    in welcher reinfolg rufst du die dialoge den auf?
    wen du das eine aus den ander aufrufst kandt du doch beim aufruf die fariable mitgeben.

    dialog2.wert=this.wert;
    dialog2.DuModal();
    

    MFG TaccoGo



  • in einer .c oder .cpp datei hast du deine variable also z.b.

    int my_int;
    

    in anderen dateien greifst du über 'extern' darauf zu

    extern int my_int;
    

    damit wird immer dieselbe variable adressiert. man kan auch das 'extern' zeug in eine .h datei packen.

    btw: du darfst vor das original aber nicht 'static' schreiben



  • mit der Funktion AfxGetApp() bekommst du einen Zeiger auf deinen Basisdialog. Dort kannst du die Variablen Speichern.

    CMyApp* pApp = (CMyApp*) AfxGetApp();
    
    strcpy(pApp->m_pszString, "Hallo Welt");
    


  • Such mal nach Singelton, evtl. hilft dir das Entwurfsmuster weiter.

    Devil



  • Ich habe es mit extern versucht aber es funktioniert nicht.
    Ich habe in der Datei ADS2Dlg.cpp eine Variable (CString m_Baustelle) efiniert und möchte nun von einem anderen Dialog etwas in diese Variable schreiben.

    Dieses Beispiel verstehe ich nicht ganz! Womit greiffe ich auf was zu?

    mit der Funktion AfxGetApp() bekommst du einen Zeiger auf deinen Basisdialog. Dort kannst du die Variablen Speichern.

    CMyApp* pApp = (CMyApp*) AfxGetApp();
    
    strcpy(pApp->m_pszString, "Hallo Welt");
    

    Gibt es keine Möglichkeit die Variable ganz eifach Global für alle Dialoge zu definieren?



  • tach auch ,
    ganz simpel (+dirty) kannst du einen pointer auf eine struktur(klasse) durchreichen(konstruktor oder entsprechene fkt)..und diesen nach belieben bearbeiten..
    weiterhin kannst du mittels static (Klassenobjekt) arbeiten ..


Log in to reply