Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » FAQ VC++ / MFC » CFileFind

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
17.01.2003, 23:18 Uhr
Uwe
C/C++ Master
(Administrator)


Erstellt von FloSoft

Mit folgendem Code einer Konsolenanwendung mit MFC-Unterstützung werden
alle ansprechbaren Laufwerke nach einer Datei (hier: win.ini) durchsucht:



C++:
// DateiSearch.cpp : Definiert den Einsprungpunkt für die Konsolenanwendung.
//

#include "stdafx.h"
#include "DosInit.h"// hier der Header für die Anwendung (je nach Anwendungsname)

#include <direct.h>

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

// Filename definieren (Bitte im Beispiel klein schreiben)
#define FILENAME "win.ini"

// Prototypen der Funktionen, die wir benötigen
void ExeFound(CString strPath,CString strName);
void search(CString strDir,CString strLaufwerk);

/////////////////////////////////////////////////////////////////////////////
// Das einzige Anwendungsobjekt

CWinApp theApp;

using namespace std;

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
    int nRetCode = 0;

    // MFC initialisieren, Ausgabe und Fehlermeldung bei Fehlern
    if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
    {
        // ZU ERLEDIGEN: Fehlercode gemäß Ihren Anforderungen ändern
        cerr << _T("Fatal Error: MFC initialization failed") << endl;
        nRetCode = 1;
    }
    else
    {
        cout << "Searching..." <<endl;
        cout << endl;

        CString strLaufwerk;
        for(int x=1; x<27; x++) // Laufwerke maximal von a( =0 ) bis z( =26 ) durchgehen
        {
            if(_chdrive(x)==0) // Wenn Laufwerk ansprechbar
            {
                strLaufwerk.Format("%c:\\",(x+96)); // x in ASCII umwandeln damit der Laufwerksbuchstabe rauskommt (a=97)
                search(strLaufwerk,strLaufwerk); // Suchfunktion aufrufen
            }
        }
    }
    return nRetCode;
}

void search(CString strDir,CString strLaufwerk)
{
    cout << "Searching in Folder \"" << (const _TCHAR*)strDir << "\" on Drive \"" << (const _TCHAR*)strLaufwerk << "\"" <<endl;
    CFileFind Find;
    BOOL bContinue = Find.FindFile( strDir + "*"); // Alle Dateien suchen lassen
    while (bContinue)
    {
        bContinue = Find.FindNextFile();

        if((Find.IsDirectory())&&(!Find.IsDots())) // Wenn Verzeichnis & keine Punkte
        {
            CString strDir2 = strDir + Find.GetFileName() + _T("\\"); // Verzeichnis neu zuweisen

            search(strDir2,strLaufwerk); // Rekursiv aufrufen
        }
        else    // Wenn kein Verzeichnis
        {
            if(!Find.IsDots()) // Wenn keine Punkte (cd..)
            {
                CString strFound = Find.GetFileName(); // Filename holen

                strFound.MakeLower();
                if(strFound==FILENAME) // Wenn Filename "win.ini" lautet
                {
                    ExeFound(Find.GetFilePath(),Find.GetFileName()); // Nach "gefunden" springen
                }
            }
        }
    }
    Find.Close();

}

void ExeFound(CString strPath,CString strName)
{
    cout << endl;

    cout << "Search complete: File Found" <<endl;

    cout << endl;

    CString strText;
    strText  = _T("Die Datei \"");
    strText += strName;
    strText += _T("\" hat den Pfad \"");
    strText += strPath;
    strText += _T("\".");

    cout << (const _TCHAR*)strText <<endl; // Ergebnis ausgeben

    system("pause");

    exit(-1); // Programm beenden
}



--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe

Dieser Post wurde am 17.01.2003 um 23:19 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ FAQ 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: