002
01.06.2005, 19:34 Uhr
~TrialReg
Gast
|
Wenn keine Reaktion kommt war die Antwort sch...
Geht auch anders ich poste mal meine deltree routine... macht von ungefähr ja das selbe
bool IsDots( char *szFile ) { if( lstrcmp( szFile, "." ) && lstrcmp( szFile, ".." ) ) return FALSE; return TRUE; } BOOL DeleteDirectory( char *szDirectory, bool force ) { HANDLE hFind; char szDir[MAX_PATH],szFile[MAX_PATH]; WIN32_FIND_DATA ffd; bool bSearch, rmdir; register DWORD i;
if( szDirectory[ (i=lstrlen( szDirectory ) - 1 ) ] == '*' ) { *(WORD*)( &szDirectory[i-1] )=0; rmdir=false; } else rmdir=true;
lstrcpy( szDir, szDirectory ); lstrcpy( szFile,szDirectory ); lstrcat( szDir, "\\*" ); lstrcat( szFile, "\\" );
if( ( hFind=FindFirstFile( szDir, &ffd ) ) == INVALID_HANDLE_VALUE ) return FALSE;
lstrcpy( szDir, szFile );
bSearch=true;
while( bSearch ) { if( FindNextFile( hFind, &ffd ) ) { if( IsDots( ffd.cFileName ) ) continue; lstrcat( szFile, ffd.cFileName ); if((ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) ) {
if( !DeleteDirectory( szFile, force ) && !force) { FindClose( hFind ); return FALSE; }
RemoveDirectory( szFile ); lstrcpy( szFile, szDir ); } else { if( ffd.dwFileAttributes & FILE_ATTRIBUTE_READONLY ) SetFileAttributes( szFile, FILE_ATTRIBUTE_NORMAL ); if( !DeleteFile( szFile ) && !force ) { FindClose( hFind ); return FALSE; }
lstrcpy( szFile, szDir ); } } else { if( GetLastError() == ERROR_NO_MORE_FILES ) bSearch=false; else { FindClose( hFind ); return FALSE; } } } FindClose( hFind );
if( rmdir ) return RemoveDirectory( szDirectory ); else return true; } |