Показать сообщение отдельно
Старый 27.11.2003, 14:59   #3  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Вот рабочий код:

int deleteAllFiles()
{
int Handle=0;
str FileName;
str Path = 'D:\\Temp';
dialogButton Db;

[Handle, FileName] = WinApi::findFirstFile(Path + '\\*.txt');
if (Handle == -1) return -1; // not found

Db = BOX::yesNo("В указанном каталоге уже есть TXT файлы!!! Удалить их?", DialogButton::Yes);
if (Db == DialogButton::No) return 0;

while (FileName)
{
WinApi::deleteFile(Path + '\\' + FileName);
FileName = WinApi::findNextFile(Handle);
}
WinApi::findClose(handle);
return 1;
}

Ваши ошибки:
1. Как я и думал, нужно было использовать FindNextFile
2. Нельзя было выполнять WinApi::findClose(handle), не закончив операцию;
3. Использование не совсем традиционного способа вытаскивания значений из контейнера (conpeek) привело к повторному вызову функции FindFirstFile, что само по себе некорректно.

Желаю удачи в нелегком деле удаления AllFiles с AllDrives

PS: Ради интереса посмотрите реализацию класса CCCopyDirectory.
За это сообщение автора поблагодарили: Gustav (5), alex55 (1), Logger (3).