{external PathRelativePathToA in ShlwApi.dll}
{http://msdn.microsoft.com/en-us/library/bb773740(VS.85).aspx}
function PathRelativePathTo(
pszPath: PAnsiChar; {Buffer de sortie (MAX_PATH (260) de taille minimum}
pszFrom: PAnsiChar; {Chemin où fichier de départ (MAX_PATH de taille max}
dwAttrFrom: DWORD; {Détermine si pszFrom désigne
-un répertoire -> FILE_ATTRIBUTE_DIRECTORY
-où un fichier -> 0}
pszTo: PAnsiChar; {Chemin où fichier de déstination (MAX_PATH de taille max}
dwAttrTo: DWORD): {Idem que dwAttrFrom}
BOOL; stdcall; external 'shlwapi.dll' name 'PathRelativePathToA';
procedure TForm1.Button1Click(Sender: TObject);
var PPath: array[0..MAX_PATH-1] of AnsiChar;
sFrom, sTo: string;
begin
sFrom := 'C:\CodeS SourceS\DelphiFr\CS Test\Snippets\RelativePath';
sTo := 'C:\CodeS SourceS\DelphiFr\CS Codes\Teste.txt';
if PathRelativePathTo(@PPath, PAnsiChar(sFrom), FILE_ATTRIBUTE_DIRECTORY,
PAnsiChar(sTo), 0) then
Label1.Caption := PPath; {Renvoie '..\..\..\CS Codes\Teste.txt'}
end;