--- title: "ksGetRelativePathFromSystemPath - Сформировать относительный путь к файлу из заданного полного пути к файлу" type: guide api: [api7] tags: [guide, api7, ksgetrelativepathfromsystempath] sources: - ksgetrelativepathfromsystempath.html --- *API экспортных функций > Функции работы с файлами документов * ## ksGetRelativePathFromSystemPath - Сформировать относительный путь к файлу из заданного полного пути к файлу Пример... Аналог данной функции при использовании Automation - метод KompasObject::ksGetRelativePathFromSystemPath. Синтаксис: ``` void ksGetRelativePathFromSystemPath (char *sourcePath, char *destBuff, int bufLen, int pathType); Входные параметры: sourcePath - полный путь к файлу, bufLen - длина отведенного буфера для возвращаемого значения в символах, pathType - тип системной папки. Типы системных папок... Выходные параметры: destBuff - буфер для сформированного относительного пути к файлу. Примечание. При использовании Unicode следует использовать функцию ksGetRelativePathFromSystemPathW. ``` ## ksGetRelativePathFromSystemPath - пример использования char * catalogName[] = {"папка системных файлов", "папка библиотек" , "папка временных файлов", "папка конфигурации" , "INI-файл" }; //сформировать полный путь к заданному файлу RequestInfo info; memset(&info, 0, sizeof(info)); info.title = "Папки файлов системы "; info.commands = "!Системные !Библиотеки !Временные !Конфигурация !INI-файл "; info.prompt = "Выберите нужную папку"; int j; static char *buf = "user.ttt"; char fileName[250]; int typeCatalog; do { j = ::CommandWindow(&info); if (j > 0) { switch (j) { case 1 : typeCatalog = sptSYSTEM_FILES; break;// Относительно папки системных файлов case 2 : typeCatalog = sptLIBS_FILES ; break;// Относительно папки файлов библиотек case 3 : typeCatalog = sptTEMP_FILES ; break;// Относительно папки сохранения временных файлов case 4 : typeCatalog = sptCONFIG_FILES; break;// Относительно папкисохранения конфигурации системы case 5 : typeCatalog = sptINI_FILE ; break;// Относительно полного имени INI-файла системы } //полный путь ::ksGetFullPathFromSystemPath(buf , // относительный путь к файлу (без системного пути) fileName, // (результат) полный путь к файлу 250, // размер буфера typeCatalog); // путь установленного типа см. ksSystemPath string mess = "Полный путь к файлу user.ttt \n"; mess = catalogName[j -1]; mess = " :\n"; mess = fileName ; Message ((char*)mess.c_str()); char relName[250]; //относительный путь ::ksGetRelativePathFromSystemPath(fileName, //полный путь к файлу relName, //(результат) относительный путь к файлу (без системного пути) 250, //размер буфера typeCatalog); //путь установленного типа см. ksSystemPath mess = "Относительный путь к файлу \n"; mess = fileName; mess = "\n"; mess = catalogName[j -1]; mess = " :\n"; mess = relName; Message ((char*)mess.c_str()); } } while (j > 0);