Здравствуйте. Проблема заключается в следующем. Написал приложений одной из функций которого является рекурсивный обход директории. Когда это приложение запускается на другом компьютере с установленным другим языком, оно вылетает с сообщением PROGRAM CRASH. Путем долгого поиска нашел, что проблема заключается в именах файлов и папок содержащих символы китайского языка. Когда программа доходит до них, она вылетает с вышеназванной ошибкой. Как добавить в проект Visual Studio поддержку разных языков? Подскажите пожалуйста. Уже сутки мучаюсь с этим.
WIN32_FIND_DATAW ffd;
TCHAR szDir[MAX_PATH];
size_t length_of_arg;
HANDLE hFind = INVALID_HANDLE_VALUE;
DWORD dwError = 0;
StringCchLength(dir, MAX_PATH, &length_of_arg);
StringCchCopy(szDir, MAX_PATH, dir);
StringCchCat(szDir, MAX_PATH, TEXT("\\*"));
hFind = FindFirstFile(szDir, &ffd);
if (INVALID_HANDLE_VALUE == hFind)
{
return 0;
}
do
{
try {
if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if (!(std::wstring(L".") == std::wstring(ffd.cFileName)) && !(std::wstring(L"..") == std::wstring(ffd.cFileName)))) {
try {
TCHAR directory[MAX_PATH];
StringCchCopy(directory, MAX_PATH, dir);
StringCchCat(directory, MAX_PATH, TEXT("\\"));
StringCchCat(directory, MAX_PATH, ffd.cFileName);
//wprintf(L"%s: %s\n", L"Folder", directory);
get_paths_arguments((STRSAFE_LPWSTR)directory, ctls, len);
}
catch (exception &ex) {
std::cout << "EXCEPTION ON GET DIR NAME";
}
}
}
else
{
if (ffd.cFileName != NULL) {
TCHAR directory[MAX_PATH];
StringCchCopy(directory, MAX_PATH, dir);
StringCchCat(directory, MAX_PATH, TEXT("\\"));
StringCchCat(directory, MAX_PATH, ffd.cFileName);
//wprintf(L"%s: %s\n", L"File", directory);
ctls->catls[*len].name = (STRSAFE_LPWSTR)directory;
*len = *len + 1;
ctls->length = *len;
//cout << hFind << endl;
if (*len == (ctls->size - 1)) {
std::cout << "CRITICAL SIZE OF PATHS STRUCTURE" << std::endl;
FindClose(hFind);
return 0;
}
}
}
}
catch (char * str) {
cout << "EXCEPTION ON GET_PATHS_ARGUMENTS: " << *str << endl;
return 0;
}
} while (FindNextFile(hFind, &ffd));
FindClose(hFind);
return 0;
Разобрался. Проблема была в том, что не проверялось возвращаемое значение функций StringCchCopy и StringCchCat. После того, как получил возвращаемое значение и сравнил его с S_OK, все стало хорошо. Проблема видимо была с превышением максимальной длины пути.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
ЗдравствуйтеЕсть данный код на smarty, который добавляет на страницу формы для отправки информации на почту
Здравствуйте, мне необходимо добавить на сайт фото 360 (виртуальная реальность), отснятые при помощи Samsung Gear 360, как это реализоватьОпыта в этом...
Добрый день, как можно осуществить загрузку изображения img1 в canvas со страницы через id для генерации и последующего скачивания получившегося...