Porównanie dwóch ścieżek
Ostatnio zmodyfikowano 2012-09-21 21:59
yoogi Temat założony przez niniejszego użytkownika |
Porównanie dwóch ścieżek » 2012-09-21 21:59:47 Witam, mam dwie ścieżki, różnią się ukośnikami i może wystąpić "\\..\\" - cofnięcie do katalogu wcześniejszego. Jest jakaś funkcja w WinAPI która z takiej ścieżki robi właściwą ścieżkę rozpoznawaną przez system ? Z tego co wiem to każda nazwa folderu bądź katalogu ma zawsze 8 znaków na przykład "aplikacja.exe" -> "apl~.exe" HELP ! :) Wygooglowałem: http://msdn.microsoft.com/en-us/library/aa364962%28VS.85%29.aspx http://msdn.microsoft.com/en-us/library/windows/desktop/aa364963(v=vs.85).aspx Jak ktoś ma lepszy pomysł, to niech się nie wstydzi zabrać głosu w temacie :) "C:\\users\\aron\\desktop\\..\\documents\\" powinna być równa z "C:/users/aron/documents" Rozwiązane. GetFullPathName pomogło i: bool IsSameFile( LPCWSTR szPath1, LPCWSTR szPath2 ) { _ASSERT( szPath1 != NULL ); _ASSERT( szPath2 != NULL ); HANDLE handle1 =::CreateFileW( szPath1, 0, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); HANDLE handle2 =::CreateFileW( szPath2, 0, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); bool bResult = false; if( handle1 != INVALID_HANDLE_VALUE && handle2 != INVALID_HANDLE_VALUE ) { BY_HANDLE_FILE_INFORMATION fileInfo1; BY_HANDLE_FILE_INFORMATION fileInfo2; if(::GetFileInformationByHandle( handle1, & fileInfo1 ) &&::GetFileInformationByHandle( handle2, & fileInfo2 ) ) { bResult = fileInfo1.dwVolumeSerialNumber == fileInfo2.dwVolumeSerialNumber && fileInfo1.nFileIndexHigh == fileInfo2.nFileIndexHigh && fileInfo1.nFileIndexLow == fileInfo2.nFileIndexLow; } } if( handle1 != INVALID_HANDLE_VALUE ) ::CloseHandle( handle1 ); if( handle2 != INVALID_HANDLE_VALUE ) ::CloseHandle( handle2 ); return bResult; }
|
|
« 1 » |