Path Name Prüfen...



  • char* pathName = "res\\image.gif";
    

    - wie kann ich überprüfen, ob "pathName" vorhanden?
    - wie kann ich Datei Erweiterung(GIF) abfragen?

    danke.



  • BOOL FileExists(LPCTSTR filename)
    {
       WIN32_FIND_DATA FindFileData;
       HANDLE handle = FindFirstFile(filename, &FindFileData);
       BOOL retVal = (handle != INVALID_HANDLE_VALUE);
       FindClose(handle);
       return retVal;
    }
    
    VOID ExtractFileExtension(LPCTSTR filename, LPCTSTR& ext)
    {
       int slashpos = strlen(filename);
       while(filename[slashpos] != '.')
          slashpos--;
       ext = filename + slashpos * sizeof(char);
    }
    
    // Beispiel zur zweiten Funktion
    char fn[14] = "C:\\netlog.txt";
    fn[13] = '\0';
    char* ext;
    ExtractFileExtension(fn, ext);
    MessageBox(NULL, ext, "Die Extension:", MB_OK);
    

    [ Dieser Beitrag wurde am 08.09.2002 um 03:36 Uhr von WebFritzi editiert. ]



  • du kannst auch _splitpath() bzw. _wsplitpath() (sh. MSDN) benutzen



  • Diese Funktionen kennt meine Windows-SDK-Doku nicht.



  • Meine auch nicht, aber ich habe schon mal so was im PSDK gesehen. Ich finde es bloß nicht wieder. 😞



  • Meine auch nicht, aber ich habe schon mal so was im PSDK gesehen. Ich finde es bloß nicht wieder. 😞

    PathFileExists(), PathFindExtension()



  • Jetzt habe ich es 🙂 : _splitpath ist eine CBuilder-Funktion.

    char *ExtractFileName(char *Path)
    {
      char *FileName;
    
      char drive[_MAX_DRIVE];
      char dir[_MAX_DIR];
      char fname[_MAX_FNAME];
      char ext[_MAX_EXT];
    
      FileName = (char *)malloc(_MAX_FNAME);
    
      _splitpath(Path, drive, dir, fname, ext);
      strcpy(FileName, fname);
      strcat(FileName, ext);
    
      return FileName;
    }
    
    char *ExtractFileExt(char *Path)
    {
       char *FileExt;
    
      char drive[_MAX_DRIVE];
      char dir[_MAX_DIR];
      char fname[_MAX_FNAME];
      char ext[_MAX_EXT];
    
      FileExt = (char *)malloc(_MAX_EXT);
    
      _splitpath(Path, drive, dir, fname, ext);
      strcpy(FileExt, ext);
    
      return FileExt;
    }
    

    [ Dieser Beitrag wurde am 09.09.2002 um 05:27 Uhr von Luckie editiert. ]



  • Kritik: Man sollte in einer Funktion nicht Speicher allokieren, den man darin dann nicht mehr freigibt.

    Ich finde meine Funktionen eigentlich ganz gut. Was gibt's jetzt noch zu meckern? 🙄



  • Ist nicht von mir, habe ich irgendwie mit google gefunden.



  • Original erstellt von WebFritzi:
    **Kritik: Man sollte in einer Funktion nicht Speicher allokieren, den man darin dann nicht mehr freigibt.

    Ich finde meine Funktionen eigentlich ganz gut. Was gibt's jetzt noch zu meckern? 🙄**

    Wenn du darum bettelst:
    Man könnte die Existenz einer Datei auch mit CreateFile() überprüfen.
    Ist kürzer 😉



  • Und wennes sich um eien Exe handlet die gerade benutzt wird? Was lieferet CreateFile dann zurück? Doch auch INVALID_HANDLE oder?



  • Hm, jå, hast recht. 😉



  • Hmm, bäh, hast doch nicht recht. 😉



  • PathFileExists() 😛

    Unschlagbar 😃



  • Gibts bei mir auch nicht.



  • ...PathFileExists() geht aber erst am Win98 oder Win95 mit InternetExplorer 4.0



  • Naja, über die Einschränkung kann man wohl hinwegsehen.

    In der Statistik auf unserer HP (s.u. Link) hat keiner mehr eine Konfiguration mit der es nicht geht.



  • Original erstellt von WebFritzi:
    Gibts bei mir auch nicht.

    LOL



  • Wieso lachst du? Das war schon ernst gemeint. In meinem SDK ist diese Funktion nicht vorhanden.



  • Also ich habe die Funktion aber auch bei mir in der SDK. 😃
    Hast du vielleicht ne ältere Version, oder überhaupt kein MS Produkt?
    Also ich habe noch die 6.0 Autoren Version. 🙂


Log in to reply