мне нужна помощь с получать полный путь от WIN32_FIND_DATA мой код:Получение полного пути от WIN32_FIND_DATA
WIN32_FIND_DATA FindData;
HANDLE hFind;
hFind = FindFirstFile(L"../art/*.dds", &FindData);
if(hFind == INVALID_HANDLE_VALUE)
{
PrintCharS("Error searching directory");
return;
}
do
{
char ch[260];
char DefChar = ' ';
WideCharToMultiByte(CP_ACP, 0, FindData.cFileName, -1, ch, 260, &DefChar, NULL);
string ss(ch);
if (ch != "invalid.dds")
{
LoadFile(/ Need WCHAR* that points to file \);
}
}
while(FindNextFile(hFind, &FindData) > 0);
Я буквально потратить весь день, пытаясь понять это. Но я не могу получить путь (../art/*.dds) плюс имя файла также как я могу проверить подпапки? или он делает это уже?
Текущий код:
WIN32_FIND_DATA FindData;
HANDLE hFind;
hFind = FindFirstFile(L"../art/*.dds", &FindData);
if(hFind == INVALID_HANDLE_VALUE)
{
PrintCharS("Error searching directory");
return;
}
do
{
char ch[260];
char DefChar = ' ';
WideCharToMultiByte(CP_ACP, 0, FindData.cFileName, -1, ch, 260, &DefChar, NULL);
string ss(ch);
// Just incase they're needed
DWORD retval=0;
BOOL success;
TCHAR buffer[4096]=TEXT("");
TCHAR buf[4096]=TEXT("");
TCHAR** lppPart={NULL};
LPSTR buffeer = "";
LPSTR* lpppPart = NULL;
retval = GetFullPathNameA(ch, 4096, buffeer, lpppPart);
if (retval == 0)
{
std::exit(1);
}
else
{
LoadFile(/ Expected WCHAR* \);
}
}
while(FindNextFile(hFind, &FindData) > 0);
Я совершенно глуп и устал работать с этим, но мне действительно нужно, чтобы он работал, мне нужен пример того, как это сделать. Я пробовал функцию GetFullPathName, но, похоже, не получил меня нигде, кроме самой первой буквы пути. – SpecialLUANewbie
@SpecialLUANewbie очень первое письмо: похоже, что вы получаете Unicode (UTF-16), но рассматриваете его как ANSI (8-разрядный), чтобы вы видели, например. {64, 0, 65, 0, ...} вместо 'L" AB ... "' Избегайте макросов и UNICODE #define и пишите 'GetFullPathNameW' (- * W *), чтобы быть ясным и получить проверку типов в случае, когда эта настройка несовместима. –
Если вы передадите результат WideCharToMultiByte, он не будет работать с неквалифицированным GetFullPathName, так как я вижу, что ваш контекст использует формы -W. Передайте ch в GetFullPathNameA или передайте оригинал в GetFullPathNameW. –