EditBox Wert global benutzen



  • Hallo allerseits

    Ich möchte gerne einen Pfad der in die EditBox eingegeben wurde in einer anderen Klasse benutzen (die kein Dialog ist). Die Member-Variable heisst "m_strEditDirectory". Ich hab schon 'extern' benutzt, ging aber nicht. Ganz normal als CString kann ich die Variable irgendwie auch nicht weitergeben und in der anderen Klasse wieder einlesen. Ich habs so versucht:

    CString CScanFilterDlg::OnButtonScan(CString m_strEditDirectory)
    {
    ...
    return m_strEditDirectory;
    }
    

    Dann in der anderen Klasse:

    BOOL CProcess::ProcessFile()
    {
    CScanFilterDlg    SFD;
    directory         SFD.OnButtonScan(m_strEditDirectory);
    
    AfxMessageBox(directory);
    
    return TRUE;
    }
    

    Kann mir einer weiterhelfen und sagen was ich falsch gemacht habe oder wie es einfacher gehen würde? Danke im Voraus



  • Hallo,

    das ferstech ich nicht??

    directory         SFD.OnButtonScan(m_strEditDirectory);
    

    ich würde es so machen.

    CString directory;
    directory=SFD.OnButtonScan(m_strEditDirectory);
    

    MFG TaccoGo



  • Was jedoch mit einem Debugger Fehler endet. 😞



  • hastes UpdateData(true) vergessen?

    ich weiss nich was du genau machen moechtest aber mit einer ('globalen') theApp-variable, oder die einer andern klasseninstanz(!!!):

    in theApp:

    CString m_strEditBoxString;
    

    in deiner dialogfeldklasse:

    void CDeinDialog::OnChangeEdit()
    {
      UpdateData(true);
      theApp.m_strEditBoxString = m_DeineEditVariable;
    }
    

    Esco



  • Nein, in der Hauptklasse ist es ja kein Problem mit der Member-Variable umzugehen weil ich sie einfach immer ganz normal mit m_strEditDirectory ansprechen und verwenden kann. Ich habe eine komplett neue Klasse namens CProcess und dort eine Funktion. In dieser Funktion möchte ich den Wert benutzen den ich in der EditBox m_strEditDirectory eingegeben habe.

    CScanFilterDlg = Hauptklasse. Da kann ich m_strEditDirectory problemlos überall verwenden.
    CScanFilterApp = Ebenfalls Standardklasse. Hat mit dem Problem nix zu tun.
    CProcess = Die Klasse in der ich gerne den Wert von m_strEditDirectory haben möchte um den weiterzuverarbeiten.

    Ist das verständlich oder muss ich es anders erklären?



  • BAR schrieb:

    Ist das verständlich oder muss ich es anders erklären?

    hab ich mich unverständlich ausgedrueckt, oder muss ich das erklären?

    mit dem ansatz, den ich dir geschildert habe kannst du das von dir beschriebene problem lösen!

    Esco 😉



  • Es funktioniert aber nicht, deshalb habe ich ja eine ausführlichere Erklärung abgegeben. Egal was ich mache, er kennt sobald ich in CProcess bin (ist nicht der Hauptdialog sondern eine selbstständige Klasse) einfach den Wert der EditBox nicht. Ich möchte ja nur die Eingabe der EditBox weiterleiten und in einer Variable speichern die dann in einer Klasse die keinen blassen Schimmer davon hat zu benutzen. Ich kann weiterleiten und returnen so viel ich will, es funktioniert nicht. Und warum ich eine theApp Variable deklarieren soll und sie dann im Dialog verwenden wo es ohnehin schon geht versteh ich auch nicht ganz.

    Danke für die Hilfe



  • Sorry für den Doppelpost aber ich wollt nur sagen dass ich es jetzt anders gelöst habe. Ich mach einfach ne ganz normale Funktion in der Hauptklasse und von dort aus kann ich ja jede Variable benutzen. Trotzdem vielen Dank für die Hilfe!


Anmelden zum Antworten