Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » CFindFile sucht nicht nur im angegeben Verzeichnis

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
22.02.2006, 18:49 Uhr
xXx
Devil


Also, ich hab die CFindFile Klasse benutzt, die ja bekanntlich zum suchen von Dateien ist

Also, mein Code sieht wie folgt aus:

C++:
void CLevel_EditorEntityBar::SearchForModelfiles(CTreeCtrl *pTreeCtrl)
{
    HTREEITEM hRootItem        = pTreeCtrl->InsertItem("Data", TVI_ROOT);

    CFileFind file;
    BOOL bFile = file.FindFile("./Data/*.*");
    while (bFile)
    {
        bFile = file.FindNextFile();
        if(file.IsDirectory())
        {
            HTREEITEM hSubRootItem = pTreeCtrl->InsertItem(file.GetFileName(), hRootItem);
            CFileFind subFile;
            char path[512];
            sprintf(path, "./Data/%s/*.tbm", file.GetFileName());
            BOOL bSubFile = subFile.FindFile(path);
            while (bSubFile)
            {
                bSubFile = subFile.FindNextFile();
                pTreeCtrl->InsertItem(subFile.GetFileName(), hSubRootItem);
            }
        }
        else
            pTreeCtrl->InsertItem(file.GetFileName(), hRootItem);
    }
}


Also, es ist gewollt, das der nur im einer Pfadtiefe sucht, die eins tifer als .\Data ist...

Das PRoblem ist nur, das ich ja so eigentlich nur in dem verzeichnis suchen sollte, in dem die Exe liegt... aber er sucht auch auf C und das soll er nicht ;D

k. ich vermute mal, das er durch das .\ automatisch auch auf C sucht... dann müsste ich ja extra den Pfad der exe herrausfinden... geht das nicht leichter?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
22.02.2006, 19:51 Uhr
xXx
Devil


k hab das Problem gelöst... es muss einfach wie folgt heißen:

C++:
void SearchFiles(CTreeCtrl *pTreeCtrl)
{
    HTREEITEM hRootItem        = pTreeCtrl->InsertItem("Data", TVI_ROOT);

    char cBuf[513];
    CString strPath;
    GetModuleFileName(NULL, cBuf, 512);
    strPath.Format("%s", cBuf);
    int nPos = strPath.ReverseFind('\\');
    int nLaenge = strPath.GetLength()-nPos;
    strPath.Delete(nPos, nLaenge);

    CString strTmp;
    strTmp.Format("%s/Data/*.*", strPath);
    MessageBox(strPath, "Test", MB_ICONINFORMATION);
    CFileFind file;
    BOOL bFile = file.FindFile(strTmp);
    while (bFile)
    {
        bFile = file.FindNextFile();
        if(file.IsDirectory())
        {
            HTREEITEM hSubRootItem = pTreeCtrl->InsertItem(file.GetFileName(), hRootItem);
            CFileFind subFile;
            char path[512];
            sprintf(path, "%s/Data/%s/*.tbm", strPath, file.GetFileName());
            BOOL bSubFile = subFile.FindFile(path);
            while (bSubFile)
            {
                bSubFile = subFile.FindNextFile();
                pTreeCtrl->InsertItem(subFile.GetFileName(), hSubRootItem);
            }
        }
        else
            pTreeCtrl->InsertItem(file.GetFileName(), hRootItem);
    }
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
22.02.2006, 20:29 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


warum schneidest du den exe-pfad nicht mit strrchr weg? das liefert dir nen pointer zur position, und dessen wert einfach mit '\0' terminieren, schon haste deinen Pfad
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: