Вот рабочий код:
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.