Datei öffnen\speichern Dialog



  • Hallo,

    ich glaube ich stehe diesesmal vor dem unlogischsten Problem, dass ich jemals hatte. Ich habe ein Programm geschrieben, in dem man Programme eintragen und über ein Listenfeld leicht ausführen kann. Um ein Programm hinzuzufügen kann man es über das Öffnen-Dialogfenster (CFileDialog(true)) auswählen. Diese Funktion ist folgendermaßen aufgebaut:

    void CDirectTaskDlg::OnBrowse() 
    {
        UpdateData(true);
    CFileDialog open(true);
    if(open.DoModal()==IDOK)
    {
         if(m_sPlace==open.GetPathName())
            MessageBox("Der selbe Pfad wurde bereits eingegeben.");
        else
            m_sPlace=open.GetPathName();
        UpdateData(false);
    }
    

    wobei m_sPlace der Pfad ist. Das Programm soll nun die Programme in eine Testdatei speichern, damit sie beim nächsten Programmstart wieder zur Auswahl stehen. Dies läuft über diese Funktion:

    void CDirectTaskDlg::OnAdd() 
    {
    
    UpdateData(true);
    bool name=true;
    bool path=true;
    int np;
    for(int q=0;q<=ac;q++)
    {
        if(m_sName==data[q][0])
        {
            name=false;
        }
    }
    for(int i=0;i<=ac;i++)
    {
        if(m_sPlace==data[i][1])
        {
            path=false;
            np=i;
        }
    }
    if(m_sPlace=="")
        path=false;
    if(m_sName=="")
        name=false;
    if(name && path)
    {
    ac++;
    data[ac][0]=m_sName;
    data[ac][1]=m_sPlace;
    m_ctlList.AddString(m_sName);
    CFile file;
    if(!file.Open("tasks.txt",CFile::modeWrite))
        MessageBox("Datei konnte nicht zum schreiben geöffnet werden. Die Daten werden nicht gespeichert.","Fehler");
    else
    {
    
        in+=m_sName+"$$"+m_sPlace+"&&";
        MessageBox(in);
        file.Write(in,in.GetLength());
    }
    file.Close();
    }
    else if(path)
        MessageBox("Der Name ist schon vorhanden");
    else if(name)
    {
        CString temp=data[np][0];
        int cal=40-temp.GetLength()/2;
        for(int o=0;o<cal;o++)
        {
            temp=" "+temp+" ";
        }
        MessageBox("Der Pfad ist schon vorhanden über folgenden Namen:\n\n"+temp);
    }
    else
        MessageBox("Name und Pfad sind schon vorhanden");
    }
    

    So, nun zu meinem Problem: Wenn ich den Pfad zu meinem gewünschten Programm "per Hand" eintippe, speichert er die Daten wunderbar in der Textdatei. Wenn ich jedoch den Pfad über Den Öffnen-Dialog hole, speichert das Programm gar nichts mehr. Wie gesagt, ich hab nicht die geringste Ahnung, wieso es das nicht tut, aber irgendwie muss es ja mit diesen 2 Funktionen zu tun haben.

    Danke für jede Antwort


Anmelden zum Antworten