Странное поведение SearchPath
От: MrBee  
Дата: 26.05.05 07:23
Оценка:
Чтобы определить размер строки в которой будем хранить путь к файлу вызываем функцию
DWORD dwLen = ::SearchPath(NULL, file_name, NULL, 0, NULL, NULL);

Создаем строку с вычисленным размером
TCHAR *path = new TCHAR[dwLen];

Чтобы получить путь к файлу снова вызываем функцию
dwLen = ::SearchPath(NULL, file_name, NULL, dwLen, path, &lpFilePart);

Все это нормально работает в Unicode версии этой функции, но в ANSI если file_name = _T("..\\file.txt"); то функция путь к файлу не копирует и снова возвращает тоже значение как и после первого вызова, чтобы она сработала во втором вызове функции я прибавлял к dwLen 9. Тоже самое происходит если файл находится папке из которой запускается приложение, только в этом случае я к dwLen прибавлял 2.
Проверялось в Windows XP и Windows 2000, не работает.
В Windows 98 работает.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.