Freigeben über


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 mit Null beendete Zeichenfolge der maximalen Länge MAX_PATH, die den Pfad enthält, der den Anfang des relativen Pfads definiert.

[in] dwAttrFrom

Typ: 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 mit Null beendete Zeichenfolge mit maximaler Länge MAX_PATH, die den Pfad enthält, der den Endpunkt des relativen Pfads definiert.

[in] dwAttrTo

Typ: 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 dies erfolgreich ist, oder FALSE andernfalls.

Bemerkungen

Diese Funktion verwendet ein Pfadpaar und generiert einen relativen Pfad zwischeneinander. Die Pfade müssen nicht vollständig qualifiziert sein, aber sie müssen ein allgemeines Präfix aufweisen, oder die Funktion schlägt fehl und gibt FALSE-zurück.

Lassen Sie z. B. den Ausgangspunkt pszFrom, "c:\FolderA\FolderB\FolderC" und den Endpunkt pszTolautet "c:\FolderA\FolderD\FolderE". PathRelativePathTo gibt den relativen Pfad von pszFrom zu pszTo als: "....\FolderD\FolderE" zurück. Sie erhalten dasselbe Ergebnis, wenn Sie pszFrom auf "\FolderA\FolderB\FolderC" festlegen und pszTo auf "\FolderA\FolderD\FolderE" festlegen. Andererseits geben "c:\FolderA\FolderB" und "a:\FolderA\FolderD" kein gemeinsames Präfix frei, und die Funktion schlägt fehl. Beachten Sie, dass "\" nicht als Präfix betrachtet wird und ignoriert wird. Wenn Sie pszFrom auf "\FolderA\FolderB" festlegen 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

Anmerkung

Der Header "shlwapi.h" definiert PathRelativePathTo als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht codierungsneutral ist, 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
mindestens unterstützte Client- Windows 2000 Professional, Windows XP [nur Desktop-Apps]
mindestens unterstützte Server- Windows 2000 Server [nur Desktop-Apps]
Zielplattform- Fenster
Header- shlwapi.h
Library Shlwapi.lib
DLL- Shlwapi.dll (Version 4.71 oder höher)