Función PathRelativePathToA (shlwapi.h)
Crea una ruta de acceso relativa de un archivo o carpeta a otra.
Sintaxis
BOOL PathRelativePathToA(
[out] LPSTR pszPath,
[in] LPCSTR pszFrom,
[in] DWORD dwAttrFrom,
[in] LPCSTR pszTo,
[in] DWORD dwAttrTo
);
Parámetros
[out] pszPath
Tipo: LPTSTR
Puntero a una cadena que recibe la ruta de acceso relativa. Este búfer debe tener al menos MAX_PATH caracteres de tamaño.
[in] pszFrom
Tipo: LPCTSTR
Puntero a una cadena terminada en null de longitud máxima MAX_PATH que contiene la ruta de acceso que define el inicio de la ruta de acceso relativa.
[in] dwAttrFrom
Tipo: DWORD
Atributos de archivo de pszFrom. Si este valor contiene FILE_ATTRIBUTE_DIRECTORY, se supone que pszFrom es un directorio; de lo contrario, se supone que pszFrom es un archivo.
[in] pszTo
Tipo: LPCTSTR
Puntero a una cadena terminada en null de longitud máxima MAX_PATH que contiene la ruta de acceso que define el punto de conexión de la ruta de acceso relativa.
[in] dwAttrTo
Tipo: DWORD
Atributos de archivo de pszTo. Si este valor contiene FILE_ATTRIBUTE_DIRECTORY, se supone que pszTo es directory; de lo contrario, se supone que pszTo es un archivo.
Valor devuelto
Tipo: BOOL
Devuelve TRUE si se ejecuta correctamente o FALSE de lo contrario.
Comentarios
Esta función toma un par de rutas de acceso y genera una ruta de acceso relativa de una a la otra. Las rutas de acceso no tienen que ser completas, pero deben tener un prefijo común, o la función producirá un error y devolverá FALSE.
Por ejemplo, deje que el punto inicial, pszFrom, sea "c:\FolderA\FolderB\FolderC" y el punto final, pszTo, sea "c:\FolderA\FolderD\FolderE". PathRelativePathTo devolverá la ruta de acceso relativa de pszFrom a pszTo como: "....\FolderD\FolderE". Obtendrá el mismo resultado si establece pszFrom en "\FolderA\FolderB\FolderC" y pszTo en "\FolderA\FolderD\FolderE". Por otro lado, "c:\FolderA\FolderB" y "a:\FolderA\FolderD no comparten un prefijo común y se producirá un error en la función. Tenga en cuenta que "\" no se considera un prefijo y se omite. Si establece pszFrom en "\FolderA\FolderB" y pszTo en "\FolderC\FolderD", se producirá un error en la función.
Ejemplos
#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:
El encabezado shlwapi.h define PathRelativePathTo como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutro de codificación con código que no es neutral de codificación puede provocar discrepancias que dan lugar a errores de compilación o en tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 2000 Professional, Windows XP [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows 2000 Server [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | shlwapi.h |
Library | Shlwapi.lib |
Archivo DLL | Shlwapi.dll (versión 4.71 o posterior) |