CFile::Read liefert Laufzeitfehler



  • Hi Leute!

    Bei folgendem Quellcode bekomme ich in Bedingung der Whileschleife nen Laufzeitfehler. Im Debugger zeigt er auf ein stück Quellcode in filecore.cpp.

    [cpp]
    
    CFile file;
    CString gesamt = "";
    char temp[20] = "";
    int count = 10;
    
    file.Open("config.con",CFile::shareDenyRead | CFile::modeRead ,0);
    while(file.Read(temp, count) != 0)
    {
      gesamt += temp;
    }
    file.Close();
    
    [/cpp]
    

    Es hängt an einem Assert, wo auf VALID_HANDLE getestet wird, ich erkenne meinen Fehler aber nicht.

    Danke

    Ranger



  • Hi,

    du musst schon einen Mechanismus einbauen, der erkennt, ob die Datei auch wirklich geöffnet wurde (CFile::Open liefert einen BOOL Wert zurück), denn es kann ja sein, dass die Datei gar nicht existiert.

    Außerdem solltest du

    while(file.Read(temp, count) != 0)
    {
      gesamt += temp;
    }
    

    in

    while(int nBytesRead=file.Read(temp, count) != 0)
    {
      temp[nBytesRead] = '\0';
      gesamt += temp;
    }
    

    Sonst steht in deinem String nur Müll 🙂
    Grüße Rapha


Anmelden zum Antworten