У меня есть вопрос с участием SHFileOperation:SHFileOperation Удалить когда pFrom = «»
SHFILEOPSTRUCT sf2;
memset(&sf2,0,sizeof(sf2));
sf2.hwnd = NULL;
sf2.wFunc = FO_DELETE;
sf2.fFlags = FOF_NOCONFIRMATION;
sf2.pFrom = pathSubDir; // where pathSubDir = ""
//2. Delete temporary files
int n = SHFileOperation(&sf2);
Мой Ожидалось, что с pathSubDir был «», он не удаляя и что я должен получить п не равно 0 Но это было не так. Я закончил с n = 0, что означает, что операция была успешно завершена. Мне было любопытно, может ли кто-нибудь объяснить мне, почему мои предположения ошибочны. Спасибо.
Как можно выполнить операцию «удалить ничего»? –
Ситуации, подобные этому, ДЕЙСТВИТЕЛЬНО ТРУДНЫМИ, чтобы дизайнер API мог делать правильные вещи в любой ситуации. Кто-то должен был решить: если пользователь ничего не удалит, сделайте ошибку (в конце концов, ничто уже не удалено, поэтому технически оно удаляется). Точно так же, если вызывающий абонент просит удалить «foo.bar», но нет «foo.bar», то это успех или неудача? Функции IMX, Delete() обычно лучше предполагать успех, когда их вход уже удален. Это означает, что для клиента этой функции требуется меньше проверки, и конечный пользователь больше выбирает то, что хочет удалить. – Mordachai