Ist Datei im Verzeichniss??



  • Wie kann ich herausfinden, ob eine bestimmte Datei in einem bestimmten Verzeichniss ist?? Wäre gut wenn 2 Werte zurück gegeben werden. Einmal wenn die Datei vorhanden ist und einmal wenn sie nicht da ist.
    THX



  • einfach versuchen die Datei zu öffnen

    z.b. über funktion

    BOOL FileExists (const char* pszFilename)
    {
        FILE *fp = fopen (pszFilename, "r");
    
        if (fp)
        {
            fclose (fp);
            return TRUE;
        }
    
        return FALSE;
    }
    


  • Ich hab gerade heruasgefunden das dasbei mir n bisschen Umständlich is da ich das bei ca.25 Dateien machn muss!! Mit Größe geht auch net da sich die Größe der Dateien immer ändert.



  • wo ist das problem?

    du hast doch die Dateinamen der 25 Dateien

    int nFileCount=25;
    char szFilenames[nFileCount];
    
    // blablablabla
    
    for (int i=0; i<nFileCount; i++)
    {
        if (FileExists (szFilenames[i]))
        {
            // do something
        }
        else
        {
            // do something else
        }
    }
    


  • Muss ich nich .h Dateien einbinden der so?? Weil er mir 4 Fehler zeigt!! Einer davon ist, dass FileExists nicht deklariert ist und der zweite ist das szFilenames eine unbekannte Größe hat!!??



  • Klar musst du die Funktion noch in den Hader packen.

    .
    .
    .
    private:
       BOOL FileExists (const char* pszFilename);
    

    Gruß
    :: NoName ::



  • tschuldigung, war noch nen Fehler drin.

    Für eine Konsolenanwendung könnte es so aussehen:

    #include <windows.h>
    #include <stdio.h>
    
    BOOL FileExists(char* pszFilename);
    
    int main (int argc, char*argv[])
    {
        int nFileCount=25;
        char **ppFilenames;
    
    	ppFilenames = new char* [nFileCount];
    
    	for (int i=0; i<nFileCount; i++)
    	{
    		// fülle das array und allokiere Speicher
    	}
    
        // blablablabla
    
        for (i=0; i<nFileCount; i++)
        {
            if (FileExists (ppFilenames[i]))
            {
                // do something
            }
            else
            {
                // do something else
            }
        }
    
    	for (i=0; i<nFileCount; i++)
    	{
    		// gib den allokierten Speicher wieder frei
    	}
    
    	return 0;
    }
    
    BOOL FileExists (char* pszFilename)
    {
        FILE *fp = fopen (pszFilename, "r");
    
        if (fp)
        {
            fclose (fp);
            return TRUE;
        }
    
        return FALSE;
    }
    


  • Ne das sollte schon ne Dialogbasierende Anwendung sein!! Nur egal was ich mache da komme immer noch die Fehler!! Ic hab jetzt diesen code eingefügt!!

    int nFileCount=25; 
        char szFilenames[nFileCount]; 
    
        // blablablabla 
    
        for (int i=0; i<nFileCount; i++) 
    	{ 
        if (FileExists (szFilenames[i])) 
        { 
            // do something 
        } 
        else 
        { 
            // do something else 
        } 
    	}
    

    Und die Fehler werden angezeigt!!
    error C2057: Konstanter Ausdruck erwartet
    error C2466: Reservierung eines Feldes der konstanten Groesse 0 nicht moeglich
    error C2133: 'szFilenames' : Unbekannte Groesse
    error C2065: 'FileExists' : nichtdeklarierter Bezeichner



  • 1.Wenn ich das richtig seh,erstellst du nur ein
    char mit der Grösse 25.

    2.Hast du Die Funktion FileExist definiert?



  • Hi!

    Statt des File - Open/Close nutze einfach _access(). Musst dazu nur io.h einbinden. Open/Close dürfe jeden Virenscanner aufschrecken und damit dauert das unnötig lange.



  • Leute, bitte benutzt die Klasse CFileFind dafür.



  • CFileFind findafile;
    if(findafile.FindFile("Dateiname.txt"))
      MessageBox("Datei existiert");
    else
      MessageBox("Datei existiert nicht!\n Ihr Computer geht in 10 sec in die Luft!!!;-)");
    

    Nichts leichter als das 😉


Anmelden zum Antworten