Share via


PathRelativePathToA-Funktion (shlwapi.h)

Erstellt einen relativen Pfad von einer Datei oder einem Ordner zu einer anderen.

Syntax

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

Parameter

[out] pszPath

Typ: LPTSTR

Ein Zeiger auf eine Zeichenfolge, die den relativen Pfad empfängt. Dieser Puffer muss mindestens MAX_PATH Zeichen groß sein.

[in] pszFrom

Typ: LPCTSTR

Ein Zeiger auf eine NULL-Zeichenfolge mit maximaler Länge MAX_PATH, die den Pfad enthält, der den Anfang des relativen Pfads definiert.

[in] dwAttrFrom

Art: DWORD

Die Dateiattribute von pszFrom. Wenn dieser Wert FILE_ATTRIBUTE_DIRECTORY enthält, wird pszFrom als Verzeichnis angenommen. andernfalls wird pszFrom als Datei angenommen.

[in] pszTo

Typ: LPCTSTR

Ein Zeiger auf eine NULL-Zeichenfolge mit maximaler Länge MAX_PATH, die den Pfad enthält, der den Endpunkt des relativen Pfads definiert.

[in] dwAttrTo

Art: DWORD

Die Dateiattribute von pszTo. Wenn dieser Wert FILE_ATTRIBUTE_DIRECTORY enthält, wird pszTo als Verzeichnis angenommen. andernfalls wird pszTo als Datei angenommen.

Rückgabewert

Typ: BOOL

Gibt TRUE zurück, wenn der Vorgang erfolgreich war, oder andernfalls FALSE .

Hinweise

Diese Funktion übernimmt ein Pfadpaar und generiert einen relativen Pfad von einem zum anderen. Die Pfade müssen nicht vollständig qualifiziert sein, aber sie müssen über ein gemeinsames Präfix verfügen, sonst schlägt die Funktion fehl und gibt FALSE zurück.

Lassen Sie den Ausgangspunkt pszFrom beispielsweise "c:\FolderA\FolderB\FolderC" und den Endpunkt pszTo "c:\FolderA\FolderD\FolderE" an. PathRelativePathTo gibt den relativen Pfad von pszFrom zu pszTo als "....\FolderD\FolderE" zurück. Sie erhalten das gleiche Ergebnis, wenn Sie pszFrom auf "\FolderA\FolderB\FolderC" und pszTo auf "\FolderA\FolderD\FolderE" festlegen. Andererseits haben "c:\FolderA\FolderB" und "a:\FolderA\FolderD kein gemeinsames Präfix, und die Funktion schlägt fehl. Beachten Sie, dass "\" nicht als Präfix gilt und ignoriert wird. Wenn Sie pszFrom auf "\FolderA\FolderB" und pszTo auf "\FolderC\FolderD" festlegen, schlägt die Funktion fehl.

Beispiele

#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

Hinweis

Der shlwapi.h-Header definiert PathRelativePathTo als Alias, der automatisch die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit nicht codierungsneutralem Code kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional, Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile shlwapi.h
Bibliothek Shlwapi.lib
DLL Shlwapi.dll (Version 4.71 oder höher)