Привет всем, помогите новичку
неработает код пишет что: мол так и так не могу найти файл или прочитать его с диска, хотя если pFrom указывать прямым текстом например C:\\folder\\*.*\0 чистит все, а вот в локал дата неработает, прбовал в двумя нулями пробовал по разному не работает, проверял на доступность файла в ручную все доступно, удаляется без проблем. конролировал путь через messagebox все вроде правильно но правдо пути(только что обратил внимание) он отображет с одним слешем может в это то и проблема? пожалуйста объясните как заставить код работать...
char pth1[MAX_PATH] = "";
SHGetSpecialFolderPathA(NULL, pth1, CSIDL_LOCAL_APPDATA, FALSE);
std::stringstream path_cache_S1;
path_cache_S1 << pth1<< "\\sc\\Cache\\*.*\0";
SHFILEOPSTRUCT sh;
ZeroMemory(&sh, sizeof(SHFILEOPSTRUCT));
sh.pFrom = ru_wstring(path_cache_S1.str()).c_str();
sh.fFlags = FOF_FILESONLY|FOF_NOCONFIRMATION;
sh.wFunc = FO_DELETE;
SHFileOperation(&sh);
MessageBoxW(NULL,ru_wstring(path_cache_S1.str()).c_str(),ru_wstring(path_cache_S1.str()).c_str(), 1);
функция ru_wstring
std::wstring ru_wstring(const std::string &s) {
std::wstring result;
std::locale loc("russian_Russia.1251");
result.reserve(s.size());
const std::ctype<wchar_t> &facet = std::use_facet<std::ctype<wchar_t> >(loc);
for (std::string::const_iterator i = s.begin(); i != s.end(); ++i)
result.append(1, facet.widen(*i));
return result;
}
04.06.11 17:42: Перенесено из 'C/C++'
кстати щас попрробовал сделать так и не работает, значит в этом проблема... но как ее решить..
path_cache_S1 << "C:\\VK\\Cache\\*.*\0";
Здравствуйте, RIVATNT, Вы писали:
RIV>Привет всем, помогите новичку
RIV>неработает код пишет что: мол так и так не могу найти файл или прочитать его с диска, хотя если pFrom указывать прямым текстом например C:\\folder\\*.*\0 чистит все, а вот в локал дата неработает, прбовал в двумя нулями пробовал по разному не работает, проверял на доступность файла в ручную все доступно, удаляется без проблем. конролировал путь через messagebox все вроде правильно но правдо пути(только что обратил внимание) он отображет с одним слешем может в это то и проблема? пожалуйста объясните как заставить код работать...
| | Скрытый текст |
| | RIV>RIV>char pth1[MAX_PATH] = "";
RIV>SHGetSpecialFolderPathA(NULL, pth1, CSIDL_LOCAL_APPDATA, FALSE);
RIV>std::stringstream path_cache_S1;
RIV>path_cache_S1 << pth1<< "\\sc\\Cache\\*.*\0";
RIV>SHFILEOPSTRUCT sh;
RIV>ZeroMemory(&sh, sizeof(SHFILEOPSTRUCT));
RIV>sh.pFrom = ru_wstring(path_cache_S1.str()).c_str();
RIV>sh.fFlags = FOF_FILESONLY|FOF_NOCONFIRMATION;
RIV>sh.wFunc = FO_DELETE;
RIV>SHFileOperation(&sh);
RIV>MessageBoxW(NULL,ru_wstring(path_cache_S1.str()).c_str(),ru_wstring(path_cache_S1.str()).c_str(), 1);
RIV>
RIV>функция ru_wstring
RIV>RIV>std::wstring ru_wstring(const std::string &s) {
RIV> std::wstring result;
RIV> std::locale loc("russian_Russia.1251");
RIV> result.reserve(s.size());
RIV> const std::ctype<wchar_t> &facet = std::use_facet<std::ctype<wchar_t> >(loc);
RIV> for (std::string::const_iterator i = s.begin(); i != s.end(); ++i)
RIV> result.append(1, facet.widen(*i));
RIV> return result;
RIV>}
RIV>
|
| | |
Может проблема быть в том, что дополнительный завершающий нуль, который требуется в SHFileOperation,
не попадает в std::stringstream ?
Здравствуйте, RIVATNT, Вы писали:
O>>Может проблема быть в том, что дополнительный завершающий нуль, который требуется в SHFileOperation,
O>>не попадает в std::stringstream ?
RIV>Щас пороем в эту сторону в гугле
В любом случае, Вы же не считаете, что после
sh.pFrom = ru_wstring(path_cache_S1.str()).c_str();
в pFrom строка попадает с двумя завершающими нулями ?
Здравствуйте, okman, Вы писали:
O>Здравствуйте, RIVATNT, Вы писали:
O>>>Может проблема быть в том, что дополнительный завершающий нуль, который требуется в SHFileOperation,
O>>>не попадает в std::stringstream ?
RIV>>Щас пороем в эту сторону в гугле
O>В любом случае, Вы же не считаете, что после
O>O>sh.pFrom = ru_wstring(path_cache_S1.str()).c_str();
O>
O>в pFrom строка попадает с двумя завершающими нулями ?
???? Извените. Не понял.....
Здравствуйте, RIVATNT, Вы писали:
RIV>Привет всем, помогите новичку
RIV>неработает код пишет что: мол так и так не могу найти файл или прочитать его с диска, хотя если pFrom указывать прямым текстом например C:\\folder\\*.*\0 чистит все, а вот в локал дата неработает, прбовал в двумя нулями пробовал по разному не работает, проверял на доступность файла в ручную все доступно, удаляется без проблем. конролировал путь через messagebox все вроде правильно но правдо пути(только что обратил внимание) он отображет с одним слешем может в это то и проблема? пожалуйста объясните как заставить код работать...
RIV>RIV>char pth1[MAX_PATH] = "";
RIV>SHGetSpecialFolderPathA(NULL, pth1, CSIDL_LOCAL_APPDATA, FALSE);
RIV>std::stringstream path_cache_S1;
RIV>path_cache_S1 << pth1<< "\\sc\\Cache\\*.*\0";
RIV>SHFILEOPSTRUCT sh;
RIV>ZeroMemory(&sh, sizeof(SHFILEOPSTRUCT));
RIV>sh.pFrom = ru_wstring(path_cache_S1.str()).c_str();
RIV>sh.fFlags = FOF_FILESONLY|FOF_NOCONFIRMATION;
RIV>sh.wFunc = FO_DELETE;
RIV>SHFileOperation(&sh);
RIV>MessageBoxW(NULL,ru_wstring(path_cache_S1.str()).c_str(),ru_wstring(path_cache_S1.str()).c_str(), 1);
RIV>
RIV>функция ru_wstring
RIV>RIV>std::wstring ru_wstring(const std::string &s) {
RIV> std::wstring result;
RIV> std::locale loc("russian_Russia.1251");
RIV> result.reserve(s.size());
RIV> const std::ctype<wchar_t> &facet = std::use_facet<std::ctype<wchar_t> >(loc);
RIV> for (std::string::const_iterator i = s.begin(); i != s.end(); ++i)
RIV> result.append(1, facet.widen(*i));
RIV> return result;
RIV>}
RIV>
наконец то заработал, тама закрыта...
LPWSTR pth1;
SHGetSpecialFolderPathW(NULL, pth1, CSIDL_LOCAL_APPDATA, FALSE);
std::wstring path_cache_S1 = pth1 ;
path_cache_S1+=L"\\VK\\вавв\\*.*\0";
LPCWSTR delfiles = path_cache_S1.c_str();
SHFILEOPSTRUCT sh;
ZeroMemory(&sh, sizeof(SHFILEOPSTRUCT));
sh.pFrom = delfiles;
sh.fFlags = FOF_FILESONLY|FOF_NOCONFIRMATION;
sh.wFunc = FO_DELETE;
SHFileOperation(&sh);