C++ удалить любую папку:ПОЛУЧЕНИЕ Ошибка в VISUAL STUDIO: ошибка C2664: '_chmod': не удается преобразовать параметр 1 из 'wchar_t [260]' к 'сопзЬ символ *' код
#include <string>
#include <iostream>
#include "stdafx.h"
#include <stdio.h>
#include <afx.h>
#include <windows.h>
#include <conio.h>
#include <io.h>
using namespace std;
BOOL IsDots(wchar_t* str)
{
if (_tcscmp(str, TEXT(".")) && _tcscmp(str, TEXT("..")))
return FALSE;
return TRUE;
}
BOOL DeleteDirectory(wchar_t* sPath)
{
HANDLE hFind;
WIN32_FIND_DATA FindFileData;
wchar_t DirPath[MAX_PATH];
wchar_t FileName[MAX_PATH];
_tcscpy(DirPath, sPath);
_tcscat(DirPath, TEXT("\\*"));
_tcscpy(FileName, sPath);
_tcscat(FileName, TEXT("\\"));
//GETTING THE FISRT FILE
hFind = FindFirstFile(DirPath, &FindFileData);
if (hFind == INVALID_HANDLE_VALUE)
return FALSE;
_tcscpy(DirPath, FileName);
bool bSearch = true;
while (bSearch) {
if (FindNextFile(hFind, &FindFileData)) {
if (IsDots(FindFileData.cFileName))
continue;
_tcscat(FileName, FindFileData.cFileName);
if ((FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) {
//DELETING THE DIRECTORY
if (!DeleteDirectory(FileName)) {
FindClose(hFind);
return FALSE;
}
RemoveDirectory(FileName);
_tcscpy(FileName, DirPath);
}
else {
if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_READONLY)
_chmod(FileName, _S_IWRITE);
mode if (!DeleteFile(FileName))
{
FindClose(hFind);
return FALSE;
}
_tcscpy(FileName, DirPath);
}
}
else {
if (GetLastError() == ERROR_NO_MORE_FILES)
bSearch = false;
else {
FindClose(hFind);
return FALSE;
}
}
}
FindClose(hFind);
return RemoveDirectory(sPath);
}
//CALLING THE DEL DIR FUNCTION
НАДЕЖДУ НИКОМУ МОЖЕТ ПОМОЧЬ !!
я получаю следующее сообщение об ошибке:
error C2664: '_chmod' : cannot convert parameter 1 from 'wchar_t [260]' to 'const char *'
P.S. Я использую Microsoft Visual Studio.
Я думаю, что ошибка довольно очевидна. У вас есть массив 'wchar_t' и попробуйте вызвать функцию, которая ожидает массив' char'. Вероятно, это связано с несоответствием между настройками макроса 'UNICODE' и что' _chmod' является нестандартной функцией, которая не входит в альтернативы с широким и узким символом. Вместо этого попробуйте использовать функцию Windows API или ['_wchmod'] (https://msdn.microsoft.com/en-us/library/1z319a54.aspx). –
Пожалуйста, прекратите кричать. –
_wchmod работал thnx много :) –