verzeichnis löschen
-
seid mir gegrüsst
ich habe eine rekursive funktion (siehe unten) welche mir ein verzeichnis samt datein löschen soll ...
die datein löscht er mir ohne probleme nur der verzeichnis kann ich nicht löschen weil er noch irgendwie ein hande drauf hat... kann mir da wer helfen ?
thx
matzeP.S.: is ne mischung aus mfc und winapi
prozess(CString para1, CString para2) { if(para2!="") CreateDirectory(para2,0); if(!(::SetCurrentDirectory(para1))) { return; } CFileFind vFiles; bool bFilesFound = vFiles.FindFile (para1+"*.*"); while (bFilesFound) { while(running==2) { Sleep(1); } if(running==0) { AfxEndThread(0,0); } bFilesFound = vFiles.FindNextFile(); CString datei,file; file=vFiles.GetFilePath(); int t=strlen(para1); if (vFiles.IsDots ()) {} else if (vFiles.IsDirectory ()) { prozess(file+"\\"); _flushall(); RemoveDirectory(file); DWORD dw = GetLastError(); } else { datei=file.Mid(t);//aktuelle datei count++; m_progctr.SetWindowText(datei); float pos =float((count*100)/m_info.zaehler); m_progctr.SetPos(int(pos)); CFileStatus status; CFile::GetStatus(file,status); status.m_attribute =0x00; CFile::SetStatus(file, status); DeleteFile(vFiles.GetFilePath()); } } vFiles.Close(); }
-
-
hab dank
-
nächstes problem ...
das letzte verzeichnis löscht er nicht und bei getlasterror sagt er mir fehler 32 "Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird." ?!?
-
Der Fehler sagt doch schon alles.
Du kannst keine Datei löschen, die gerade offen ist.
-
ja so weit war ich auch schon ... nur ich hab die nicht offen. die funktion löscht ja auch alle anderen verzeichnise nur halt das letzte nicht. das soll aber auch wech
-
Lösch das Verzeichnis doch mal manuell im Explorer. Wenn das klappt, weißt du das deine Funktion fehlerhaft ist.
-
auch da kann ich es nicht löschen. irgendwie hält die funktrion schonwieda ihren finger aufs verzeichnis ... warum nur beim letzten verzeichnis :((?