Prüfen ob datei verfügbar ist



  • BOOL FileExists(LPCTSTR FileName)
    {
       CFileFind* ff = new CFileFind();
       BOOL found = ff->FindFile(lpszFileName);
       delete ff;
       return found;
    }
    

    Was soll den der Mist? Warum auf dem Heap?

    BOOL FileExists(LPCTSTR FileName) {
        CFileFind ff;
        return ff.FindFile(lpszFileName);
    }
    

    Reicht doch völlig, dann wird auch keine extra Statusvariable benötigt? 😕 😕



  • Original erstellt von WebFritzi:
    **Ein wenig WinAPI für dich. Folgender Code liest alle CD-ROM-Laufwerke aus:

    char drives[256];
    int strlength = (int)::GetLogicalDriveStrings(256, drives);
    int drive_no = strlength / 4;
    
    for(int i=0; i<drive_no; ++i)
    {
       char* cDrive = drives + 4 * i;
       if(::GetDriveType(cDrive) == DRIVE_CDROM)
          MessageBox(NULL, cDrive, "Enumerating CD-ROM drives:", MB_OK);
    }
    

    **

    Gut, das funktioniert 🙂 Aber wie kombinier ich das nun mit dem Filefinder?

    CFileFind finder;
    bool founded = finder.FindFile(cDrive +CString ("cd1.id") ,0);
    if(founded)
    {
    MessageBox("Datei gefunden\n");
    }
    else
    MessageBox("Datei nicht gefunden");

    Hierbei passiert folgendes:
    Es wird das Disketten Laufwerk, Festplatte C: Festplatte 😨 und dann erst die cd-roms gecheckt 😕

    Danke im Voraus



  • char drives[256];
    int strlength = (int)::GetLogicalDriveStrings(256, drives);
    int drive_no = strlength / 4;

    for(int i=0; i<drive_no; ++i)
    {
    char* cDrive = drives + 4 * i;
    if(::GetDriveType(cDrive) == DRIVE_CDROM) {
    CFileFind finder;
    bool founded = finder.FindFile(cDrive +CString ("cd1.id") ,0);
    if(founded) {
    MessageBox("Datei gefunden\n");
    } else {
    MessageBox("Datei nicht gefunden");
    }
    }
    }



  • CStdioFile File;
        if(File.Open("d:\\cd1.id",CFile::modeRead,NULL) )
        {
        MessageBox("Datei gefunden");
        }
        else
        {
        MessageBox("Datei nicht gefunden");
        }
    

    Wenn die Datei d:\\cd1.id vorhanden ist kommt Datei gefunden wenn nich halt Datei nicht gefunden.



  • BOOL FileExistsOnCDROM(LPCTSTR lpszFileName)
    {
       char drives[256];
       BOOL retVal = FALSE;
       int strlength = (int)::GetLogicalDriveStrings(256, drives);
       int drive_no = strlength / 4;
    
       for(int i=0; i<drive_no; ++i)
       {
          char* cDrive = drives + 4 * i;
          if(::GetDriveType(cDrive) == DRIVE_CDROM)
          {
             char cFilePath[MAX_PATH];
             lstrcpyn(cFilePath, cDrive, 4);
             strcat(cFilePath, lpszFileName);
    
             if(FileExists(cFilePath))
             {
                retVal = TRUE;
                break;
             }
          }
       }
    
       return retVal;
    }
    

    Jetzt zufrieden?



  • wo muss der Code genau hin?

    hinter
    void CCDCheckerDlg::OnCD1()
    {

    bekomm ich die Meldung:
    'FileExistsOnCDROM' : local function definitions are illegal 😕



  • du fragst immer sachen...ich glaub du solltest erstmal ein buch lesen. ich hab so das gefühl das du fast nichts davon verstehst was du da machst. du fragst nach jeder klitzenkleinigkeit, die man ganz einfach auch selbst rausfinden kann. FANG NIEMALS SOFORT MIT MFC AN, lern erst C++ in der Konsole.



  • Original erstellt von Perner:
    **wo muss der Code genau hin?
    **

    Außerhalb aller anderen Funktionen.

    Jo, dudu hat vollkommen recht. Ich habe langsam auch das Gefühl, dass du keinen blassen Schimmer von alledem hast. Lies dir erstmal ein Tutorial über C++ durch. Auf www.c-plusplus.net gibts da ne Menge von.



  • Original erstellt von <dudu>:
    FANG NIEMALS SOFORT MIT MFC AN, lern erst C++ in der Konsole.

    Öhm, zu spät?



  • :p :p

    Dann geh nochmal zurück... 🙂


Anmelden zum Antworten