Compartir a través de


Función PathRelativePathToA (shlwapi.h)

Crea una ruta de acceso relativa desde un archivo o carpeta a otro.

Sintaxis

BOOL PathRelativePathToA(
  [out] LPSTR  pszPath,
  [in]  LPCSTR pszFrom,
  [in]  DWORD  dwAttrFrom,
  [in]  LPCSTR pszTo,
  [in]  DWORD  dwAttrTo
);

Parámetros

[out] pszPath

Tipo: LPTSTR de

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 de

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 de

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 de

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 de

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 de

Devuelve TRUE si se ejecuta correctamente o FALSE de lo contrario.

Observaciones

Esta función toma un par de rutas de acceso y genera una ruta de acceso relativa de una a 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 neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Conventions for Function Prototypes.

Requisitos

Requisito Valor
cliente mínimo admitido Windows 2000 Professional, Windows XP [solo aplicaciones de escritorio]
servidor mínimo admitido Windows 2000 Server [solo aplicaciones de escritorio]
de la plataforma de destino de Windows
encabezado de shlwapi.h
biblioteca de Shlwapi.lib
DLL de Shlwapi.dll (versión 4.71 o posterior)