Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Porównanie dwóch ścieżek

Ostatnio zmodyfikowano 2012-09-21 21:59
Autor Wiadomość
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:
C/C++
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;
}
P-65366
« 1 »
  Strona 1 z 1