C++ Builder 參考手冊 ? System::Sysutils ? ExtractRelativePath
獲取相對路徑,第二個路徑相對于第一個路徑的位置
頭文件:#include <System.SysUtils.hpp>
命名空間:System::Sysutils
函數(shù)原型:
System::UnicodeString __fastcall ExtractRelativePath(const System::UnicodeString BaseName, const System::UnicodeString DestName);
參數(shù):
- BaseName 路徑和文件名,字符串;如果 BaseName 是文件夾名,字符串末尾必須有路徑分隔符 \ 或 /,路徑分隔符由全局變量 System::Sysutils::PathDelim 保存,不同的操作系統(tǒng)分隔符可能不同;如果字符串末尾沒有分隔符,認為是文件名而不是文件夾名;
- DestName 路徑和文件名,字符串;
返回值:
- 獲取相對路徑,DestName 相對于 BaseName 的位置;
- 如果 BaseName 末尾有路徑分隔符,認為是文件夾名,返回 DestName 相對于這個文件夾的位置;
- 如果 BaseName 末尾沒有路徑分隔符,認為是文件名,返回 DestName 相對于這個文件所在文件夾的位置;
- D:\Hsuanlu\Documents\test.txt 相對于 D:\Hsuanlu\Programs\ 的位置為 Programs 文件夾 的 上一級 (即 D:\Hsuanlu\ 文件夾) 里面的 Documents 文件夾里面,所以函數(shù)返回 ..\Documents\test.txt
- D:\Hsuanlu\Documents\test.txt 相對于 D:\Hsuanlu\Programs 的位置為 Programs 文件 所在文件夾 (即 D:\Hsuanlu\ 文件夾) 里面的 Documents 文件夾里面,所以函數(shù)返回 Documents\test.txt
例子:獲取應(yīng)用程序的路徑
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Memo1->Lines->Add(Sysutils::ExtractRelativePath(L"D:\\Hsuanlu\\Programs\\", L"D:\\Hsuanlu\\Documents\\test.txt"));
Memo1->Lines->Add(Sysutils::ExtractRelativePath(L"D:\\Hsuanlu\\Programs", L"D:\\Hsuanlu\\Documents\\test.txt"));
}
運行結(jié)果:

運行結(jié)果
相關(guān):
- System::Sysutils::IncludeTrailingPathDelimiter
- System::Sysutils::ExcludeTrailingPathDelimiter
- System::Sysutils::PathDelim
- System::Sysutils::DriveDelim
- System::Sysutils::ChangeFileExt
- System::Sysutils::ChangeFilePath
- System::Sysutils::ExtractFileDir
- System::Sysutils::ExtractFileDrive
- System::Sysutils::ExtractFileExt
- System::Sysutils::ExtractFileName
- System::Sysutils::ExtractFilePath
- System::Sysutils::ExtractRelativePath
- System::Sysutils::ExtractShortPathName
- System::Sysutils
- std::_fullpath, std::_tfullpath, std::_wfullpath
- std::_makepath, std::_tmakepath, std::_wmakepath
- std::_splitpath, std::_tsplitpath, std::_wsplitpath
- <cstdlib>
C++ Builder 參考手冊 ? System::Sysutils ? ExtractRelativePath