CFileFind ließt Ordnernamen mit Punkten nicht korrekt aus



  • Moin beisammen

    Ich habe folgendes Problem:

    Ich durchsuche mit der untenstehenden Funktion einen Ordner und alle seine Unterordner auf MP3-Dateien und fülle damit dann ein Treeview-Element.

    Das Problem ist folgendes: Habe ich einen Ordnernamen der Punkte enthält (z.B. ../2007 - Strange Rumours ... Distant Tremors/..) dann gibt oFileFinder.GetFileTitle() bzw. oFileFinder.GetFilePath() nur 2007 - Strange Rumours .. zurück.

    Wie kann ich dieses ärgerliche Problem lösen?

    Hier noch der Code und danke schonmal für die Hilfe!!!

    void CMainDlg::initTree(CString &roPath) throw()
    {
      CFileFind oFileFinder;
      CString   oSearchString;
      HTREEITEM hTreeItem;
      BOOL      bFoundFile;
    
      CStringArray aoFolder;
      CArray<HTREEITEM, HTREEITEM> aoTreeItem;
    
      aoFolder.Add(roPath);
      aoTreeItem.Add(m_poTree->InsertItem(aoFolder.GetAt(0)));
    
      // Solange noch Order uebrig sind
      while(aoFolder.GetCount() > 0)
      {
        // Suchstring basteln und suchen
        oSearchString = aoFolder.GetAt(0);
        oSearchString += _T("\\*.*");
        bFoundFile = oFileFinder.FindFile(oSearchString);
    
        hTreeItem = aoTreeItem.GetAt(0);
    
        // Solange noch was gefunden wird...
        while(bFoundFile)
        {
          // Naechste Datei suchen
          bFoundFile = oFileFinder.FindNextFile();
    
          // Ordner...
          if(oFileFinder.IsDirectory())
          {
            if(!oFileFinder.IsDots())
            {
              aoFolder.Add(oFileFinder.GetFilePath());
              aoTreeItem.Add(m_poTree->InsertItem(oFileFinder.GetFileTitle(), hTreeItem));
            };
          }
    
          // ...oder Datei?
          else if(isMP3(oFileFinder.GetFileName()))
          {
            m_poTree->InsertItem(oFileFinder.GetFileName(), hTreeItem);
          };
        };
    
        aoFolder.RemoveAt(0);
        aoTreeItem.RemoveAt(0);
      };
    };
    

    Greetz, Kane


Anmelden zum Antworten