nach Pfadangabe die Dateien in einer ListBox anzeigen



  • Hi an alle,

    ich habe da mal etwas, und zwar:

    ich habe da eine EditBox, wo ich eine Pfadangabe mache mit z.B.:
    c:\EigeneDateien\MyPictures

    So, und jetzt zu der Frage, die mir auf der zunge liegt!
    Wie lasse ich mir, mittels dieser Pfadangabe, die Dateien die sich in
    dem angegebenen Ordner befinden, in einer ListBox anzeigen?

    Danke im voraus!





  • Einfach so:

    CFileFind finder;
    BOOL bResult = finder.FindFirstFile("c:\EigeneDateien\MyPictures");
    while(bResult)
    {
    
    bResult = finder.FindNextFile();
    
    CListBox* pBox = (CListBox*) GetDlgItem(IDC_LIST);
    pBox->AddString(finder.GetFileName());
    
    }
    

    Gruß
    :: NoName ::



  • Habs ausprobiert, klappt leider nicht.

    Und zwar gibt er mir anstatt die Dateinamen, den Ordnernamen, den ich ausgesucht habe.

    FindFirstFile kennt das VS nicht, kennt nur FindFile und FindNextFile,
    mein Code sah dann so aus:

    CFileFind finder;
    BOOL bResult = finder.FindFile(m_strPath);
    while(bResult)
    {
    bResult = finder.FindNextFile();
    CListBox* pBox = (CListBox*) GetDlgItem(IDC_LIST_FILES);
    pBox->AddString(finder.GetFileName());
    }

    Wäre schön, wenn mir noch mal jemand auf die Sprünge helfen könnte!

    ThanX



  • Der einzige Peter schrieb:

    Habs ausprobiert, klappt leider nicht.

    Und zwar gibt er mir anstatt die Dateinamen, den Ordnernamen, den ich ausgesucht habe.

    FindFirstFile kennt das VS nicht, kennt nur FindFile und FindNextFile,
    mein Code sah dann so aus:

    CFileFind finder;
    BOOL bResult = finder.FindFile(m_strPath);
    CListBox* pBox = (CListBox*) GetDlgItem(IDC_LIST_FILES);
    while(bResult)
    {
    bResult = finder.FindNextFile();
    //CListBox* pBox = (CListBox*) GetDlgItem(IDC_LIST_FILES);
    pBox->AddString(finder.GetFileName());
    }

    Wäre schön, wenn mir noch mal jemand auf die Sprünge helfen könnte!

    ThanX

    Der Cast da in der Schleife ist aber ganz böse.
    Du müsstest dir nur einmal den Pointer holen, und nicht bei jedem Schleifendurchlauf...
    Mit welcher Get-Funktion du nun den Dateinamen bekommst, musst du
    mal in der MSDN nachschauen, weiss ich jetzt auch nicht auswendig.

    zu FindFirstFile: Die Funktion ist nicht teil der Klasse CFileFind.

    Devil



  • Ich habe es so umgeändert:

    CFileFind finder;
    	BOOL bResult = finder.FindFile(m_strPath);
    
    	while(bResult)
    	{
    		bResult = finder.FindNextFile();
    		m_ListFiles.AddString(finder.GetFileName());
    	}
    

    m_ListFiles ist meine Control von der ListBox.
    Aber mit FinFirstFile komme ich immer noch nicht klar.



  • Versuchs mal so:

    CFileFind finder; 
    BOOL bResult = finder.FindFile(m_strPath); 
    
    while(bResult) 
    { 
    bResult = finder.FindNextFile(); 
    
    if(! finder.IsDots())
    {
    
    if(! finder.IsDirectory())
    {
          m_ListFiles.AddString(finder.GetFileName()); 
    }
    
    }
    }
    

    Jetzt dürfte er dir keine Ordner mehr ausgeben !

    Gruß
    :: NoName ::

    P.S. Hast du in den Pfad Joker-Zeichen '.' mit eingebaut ?
    Also so: ...FindFirstFile("c:\\EigeneDateien\\MyPictures\*.*");


Anmelden zum Antworten