bool FullPathToRelative(const char *lpszFullPath, const char *lpszProjectPath, char *lpszOutputBuffer, size_t bufferSize) {
if (char *lpszRelativePath = strstr(lpszFullPath, lpszProjectPath)) {
memset((void *)lpszOutputBuffer, 0, bufferSize);
int nCharsToCopy = (bufferSize > lpszRelativePath - lpszFullPath) ? bufferSize : lpszRelativePath - lpszFullPath;
strncpy(lpszOutputBuffer, lpszRelativePath, nCharsToCopy);
return true;
}
return false;
}
Из абсолютного в виртуалный путь
Как найти виртуальный путь относительно каталога проекта если известен абсолютный путь файла
Код:
Писал без проверки, идея ясна, думаю.
А можно на С# и попроще, половину кода не понял :)
Код:
string FullPathToRelative(string fullPath, string projectPath) {
return fullPath.Substring(projectPath.Length, fullPath.Length - projectPath.Length);
}
return fullPath.Substring(projectPath.Length, fullPath.Length - projectPath.Length);
}
Вот вам попроще. :)
Цитата: Alexander92
Код:
Вот вам попроще. :)В общем случае это некоррентный код. Он не будет работать с путями в которых могут встречаться двойные точки.
[code]
string FullPathToRelative(string fullPath, string projectPath)
{
fullPath = System.IO.Path.GetFullPath(fullPath);
projectPath = System.IO.Path.GetFullPath(projectPath);
return fullPath.Substring(projectPath.Length, fullPath.Length - projectPath.Length);
}
[code]
string FullPathToRelative(string fullPath, string projectPath)
{
fullPath = System.IO.Path.GetFullPath(fullPath);
projectPath = System.IO.Path.GetFullPath(projectPath);
return fullPath.Substring(projectPath.Length, fullPath.Length - projectPath.Length);
}
Всем спасибо за помощь