Textdatei auswählen



  • Hallo Forumsmitglieder,
    ich hab mal ein kleines Problem und weiß nicht recht, wie ich es lösen kann.
    Ich habe ein Stück Quellcode, womit ich Bitmap Dateien auswählen kann(CFileDialog) und dessen Pfad dann für den späteren gebrauch verwendet werden kann.

    //Filter für Diaolgfeld Öffnen erstellen
    static char BASED_CODE szFilter[] = "Bitmap-Dateien (*.bmp)|*.bmp||";
    
    //Dialogfeld Öffnen erzeugen
    CFileDialog m_ldFile(TRUE, ".bmp", m_sBitmap,
    	OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter);
    
    //Dialogfeld Öffnen anzeigen und Ergebnis übernehmen
    				if(m_ldFile.DoModal() == IDOK)
    
    //Gewählten Dateinamen ermitteln
    m_sBitmap = m_ldFile.GetPathName();
    

    Nun mein Problem:
    Wie kann ich den Quellcode so umstellen, dass er auschließig für Textdateien funktioniert.
    Ich hab eine Variable "ifstream data", die dann nachher durch das Textfile streamt und dann spezielle Keywords raussucht.

    ifstream data;
    //Filter für Diaolgfeld Öffnen erstellen
    static char BASED_CODE szFilter[] = "Text-Dateien (*.txt)|*.txt||";
    
    //Dialogfeld Öffnen erzeugen
    CFileDialog m_ldFile(TRUE, ".txt", data,
    	OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter);
    
    //Dialogfeld Öffnen anzeigen und Ergebnis übernehmen
    if(m_ldFile.DoModal() == IDOK)
    					{
    //Gewählten Dateinamen ermitteln
    data = m_ldFile.GetPathName();
    

    Vielen Dank für die Hilfe 🙂


  • Mod

    Was meinst Du mit "ausschließlich" für Textdateien funktioniert. Du hast doch die Extension schon umgestellt.

    Was der User Dir aber dort angibt ist sein Bier. Wenn Du eine EXE bekommst dann musst Du irgendwann halt sagen, dass Du "diese Datei nicht verstehst".



  • Ich hab das ganze ja selber geschrieben.
    Mein Problem ist, dass ich folgende Fehlermeldungen bekomme und mit denen nicht viel anfangen kann.

    error C2664: 'CFileDialog::CFileDialog' : cannot convert parameter 3 from 'class std::basic_ifstream<char,struct std::char_traits<char> >' to 'const char *'
    in dem Codestück

    CFileDialog m_ldFile(TRUE, ".txt", data,
    OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter);
    

    error C2679: binary '=' : no operator defined which takes a right-hand operand of type 'class CString' (or there is no acceptable conversion)

    in dem Codestück:

    data = m_ldFile.GetPathName();
    


  • Da steht doch:

    error C2679: binary '=' : no operator defined which takes a right-hand operand of type 'class CString' (or there is no acceptable conversion)
    

    Du weist einem ifstream einen CString zu, das kann ja nicht funktionieren, also:

    //Filter für Diaolgfeld Öffnen erstellen
    static char BASED_CODE szFilter[] = "Text-Dateien (*.txt)|*.txt||";
    
    //Dialogfeld Öffnen erzeugen
    CFileDialog m_ldFile(TRUE, ".txt", data,
    	OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter);
    
    //Dialogfeld Öffnen anzeigen und Ergebnis übernehmen
    if(m_ldFile.DoModal() == IDOK)
    {					{
        //Gewählten Dateinamen ermitteln
        ifstream data(m_ldFile.GetPathName());
        ....
    }
    


  • Hat alles wunderbar geklappt.
    Vielen Dank 👍


Anmelden zum Antworten