Funzione PathRelativePathToA (shlwapi.h)
Crea un percorso relativo da un file o una cartella a un altro.
Sintassi
BOOL PathRelativePathToA(
[out] LPSTR pszPath,
[in] LPCSTR pszFrom,
[in] DWORD dwAttrFrom,
[in] LPCSTR pszTo,
[in] DWORD dwAttrTo
);
Parametri
[out] pszPath
Tipo: LPTSTR
Puntatore a una stringa che riceve il percorso relativo. Questo buffer deve essere di almeno MAX_PATH caratteri di dimensioni.
[in] pszFrom
Tipo: LPCTSTR
Puntatore a una stringa con terminazione Null di lunghezza massima MAX_PATH che contiene il percorso che definisce l'inizio del percorso relativo.
[in] dwAttrFrom
Tipo: DWORD
Attributi del file di pszFrom. Se questo valore contiene FILE_ATTRIBUTE_DIRECTORY, si presuppone che pszFrom sia una directory; in caso contrario, si presuppone che pszFrom sia un file.
[in] pszTo
Tipo: LPCTSTR
Puntatore a una stringa con terminazione Null di lunghezza massima MAX_PATH che contiene il percorso che definisce l'endpoint del percorso relativo.
[in] dwAttrTo
Tipo: DWORD
Attributi del file di pszTo. Se questo valore contiene FILE_ATTRIBUTE_DIRECTORY, si presuppone che pszTo sia directory; in caso contrario, si presuppone che pszTo sia un file.
Valore restituito
Tipo: BOOL
Restituisce TRUE se l'operazione riesce o FALSE in caso contrario.
Commenti
Questa funzione accetta una coppia di percorsi e genera un percorso relativo da uno all'altro. I percorsi non devono essere completi, ma devono avere un prefisso comune oppure la funzione avrà esito negativo e restituirà FALSE.
Ad esempio, lasciare che il punto iniziale, pszFrom, sia "c:\FolderA\FolderB\FolderC" e il punto finale, pszTo, essere "c:\FolderA\FolderD\FolderD\FolderE". PathRelativePathTo restituirà il percorso relativo da pszFrom a pszTo come: "....\FolderD\FolderE". Si otterrà lo stesso risultato se si imposta pszFrom su "\FolderA\FolderB\FolderC" e pszTo su "\FolderA\FolderD\FolderE". D'altra parte, "c:\FolderA\FolderB" e "a:\FolderA\FolderD non condividono un prefisso comune e la funzione avrà esito negativo. Si noti che "\" non è considerato un prefisso e viene ignorato. Se si imposta pszFrom su "\FolderA\FolderB" e pszTo su "\FolderC\FolderD", la funzione avrà esito negativo.
Esempi
#include <windows.h>
#include <iostream.h>
#include "Shlwapi.h"
void main(void)
{
char szOut[MAX_PATH] = "";
char szFrom[ ] = "c:\\a\\b\\path";
char szTo[ ] = "c:\\a\\x\\y\\file";
cout << "The relative path is relative from: ";
cout << szFrom;
cout << "\n";
cout << "The relative path is relative to: ";
cout << szTo;
cout << "\n";
PathRelativePathTo(szOut,
szFrom,
FILE_ATTRIBUTE_DIRECTORY,
szTo,
FILE_ATTRIBUTE_NORMAL);
cout << "The relative path is: ";
cout << szOut;
cout << "\n";
}
OUTPUT:
==================
The relative path is relative from: c:\a\b\path
The relative path is relative to: c:\a\x\y\file
The relative path is: ..\..\x\y\file
Nota
L'intestazione shlwapi.h definisce PathRelativePathTo come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice che non è indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzioni.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 2000 Professional, Windows XP [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | shlwapi.h |
Libreria | Shlwapi.lib |
DLL | Shlwapi.dll (versione 4.71 o successiva) |