Показать сообщение отдельно
Тема: вопрос по с++ | by TEMA4
Непрочитано 02.07.2007, 19:30   # 4
 
Регистрация: 08.11.2005
Сообщений: 1,123
Отправить сообщение для mil_alex с помощью ICQ
mil_alex вне форума
во кусок оч старого кода)
Код:
static int ProcessFolder3(int level)
{
   HANDLE hFind;
   WIN32_FIND_DATA fnd;
   bool flag;

   int found=0; // have found something in this folder?

   hFind = FindFirstFile( "*.*", &fnd );
   flag=TRUE;

   if (hFind != INVALID_HANDLE_VALUE )
   while (flag)
   {
      if ( fnd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
      {
         if ( *((short *) &fnd.cFileName[0] ) == 0x002E ) goto b; // skip "."
         if ( (*((uint *) &fnd.cFileName[0] ) & 0x00FFFFFF) == 0x002E2E ) goto b; // skip ".."

         found++;

         if (SetCurrentDirectory(fnd.cFileName))
         {
            int old_path_len = strlen(my_path);
            strcat(my_path, fnd.cFileName); // append this folder name
            strcat(my_path, "\\");
            int f=ProcessFolder3(level+1);
            if (! SetCurrentDirectory(".."))
            {
               printf("error: can't cd ..\n");
               break;
            }
            my_path[old_path_len] = 0; // trim this folder name
            if (!f)
            {
               if (level) RemoveDirectory(fnd.cFileName);
            }
         }
         else
         {
            printf("error: can't cd '%s'\n", fnd.cFileName);
            break;
         }

         goto b;
      }

      strcpy(this_file, fnd.cFileName ); // local
      wsprintf( target_file, "%s%s%s", target_path, my_path, fnd.cFileName );
      found++;

      b:
      flag=FindNextFile( hFind, &fnd );
   }
   else
      found = 1; // for safety, do not assume failed directories empty
       
   FindClose(hFind);
   return found;
}
не надо его запускать) он если я верно помню стирает пустые вложенные каталоги. Просто как примерчеГ
Цитата