JPG`s filtern



  • Hallo,
    habe ein Problem.Ich würde gerne meine Verzeichnise mit einer Schleife durchforsten und mir jede JPG anzeigen lassen.So siehts aus:

    //Nach JPG`s scannen
            HANDLE fHandle;
            WIN32_FIND_DATA wfd;
    
            fHandle=FindFirstFile("C:\\*",&wfd);
    
            do
            {
                      // Eintrag nur behandeln, wenn es nicht . oder .. ist (werden nur bei Unterverzeichnissen mit zurückgeliefert)
                      // hier könnte man z.B. auch mit lstrcmp auf . und .. vergleichen, was allerdings nicht ganz so effizient ist
                     if (!( (wfd.cFileName[0]=='.') && ( (wfd.cFileName[1]=='.' && wfd.cFileName[2]==0) || wfd.cFileName[1]==0 ) ))
                     {
                            if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
                            {
                                    MessageBox(0,wfd.cFileName,"Folgendes Verzeichnis wurde gefunden:",0);
                                    // Datei ist keine, sondern ein Verzeichnis...
                                    // Hier könnte man dasselbe nochmal machen, um auch die
                                    // Unterverzeichnisse zu scannen ;-)
    
                            }
                            else
                            {
                                    string Name = wfd.cFileName;
                                    if(Name.find(".jpg"))
                                    {
    
                                            MessageBox(0,wfd.cFileName ,"Folgende Datei gefunden:",0);
                                    }
                            }
                     }
            }
            while (FindNextFile(fHandle,&wfd));
            FindClose(fHandle);
            return 0;
    

    aber irgendwie zeiigt er mich auch die ganzen anderen an.was mache ich falsch??



  • WIN32_FIND_DATA wfd;
    HANDLE hFileFind = FindFirstFile(TEXT("C:\\*.jpg"), &wfd);
    
    do
    {
        if (!((wfd.cFileName[0] == '.') && ((wfd.cFileName[1] == '.' && wfd.cFileName[2] == 0) || wfd.cFileName[1] == 0)))
        {
            MessageBox(0, wfd.cFileName, (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ? TEXT("Folgendes Verzeichnis wurde gefunden:") : TEXT("Folgendes Bild (jpg) wurde gefunden:")), MB_OK | MB_ICONINFORMATION);
        }
    }
    while (FindNextFile(hFileFind, &wfd));
    
    FindClose(hFileFind);
    


  • //if(Name.find(".jpg")) // falsch
    if(Name.find(".jpg") != std::npos) // richtig
    

    Oder noch besser:

    fHandle=FindFirstFile("C:\\*.jpg",&wfd);
    


  • jo,habs gesehen mit dem crossposting;-) aber danke nochmal.es funktioniert jetzt wunderbar;-)



  • hustbaer schrieb:

    //if(Name.find(".jpg")) // falsch
    if(Name.find(".jpg") != std::npos) // richtig
    

    Nö...
    ➡

    //if(Name.find(".jpg")) // falsch
    //if(Name.find(".jpg") != std::npos) // falsch
    if(Name.find(".jpg") != std::string::npos) // richtig
    

    😉


Anmelden zum Antworten