Текущий раздел:

Описания RDS

Приложения

Приложение А. Функции, константы и структуры RDS

А.5. Сервисные функции и макросы RDS

А.5.4. Отведение памяти и преобразование строк

А.5.4.10. rdsGetRelFilePath – полный путь к файлу в сокращенный

# Приложения

## Приложение А. Функции, константы и структуры RDS

### А.5. Сервисные функции и макросы RDS

#### А.5.4. Отведение памяти и преобразование строк

##### А.5.4.10. rdsGetRelFilePath – полный путь к файлу в сокращенный

Функция rdsGetRelFilePath преобразует полный путь к файлу в сокращенный, содержащий специальные символические константы RDS, и возвращает динамическую строку, содержащую сокращенный путь. Файл, путь к которому обрабатывается, может физически не существовать или быть недоступным в данный момент – функция работает только со строкой пути.

      RDSSTR RDSCALL rdsGetRelFilePathA( // UTF8
        RDSCSTR FileName,    // Полный путь (UTF8)
        RDSCSTR AltDefPath,  // Альтернативный путь по умолчанию (UTF8)
        int *pLength         // Возвращаемая длина строки
      );
      RDSWSTR RDSCALL rdsGetRelFilePathW( // UTF16
        RDSWCSTR FileName,   // Полный путь (UTF16)
        RDSWCSTR AltDefPath, // Альтернативный путь по умолчанию (UTF16)
        int *pLength         // Возвращаемая длина строки
      );
      // Функция-псевдоним
      RDSXSTR RDSCALL rdsGetRelFilePath( // Кодировка по умолчанию
        RDSXCSTR FileName,   // Полный путь (кодировка по умолчанию)
        RDSXCSTR AltDefPath, // Альтернативный путь по умолчанию (кодировка по умолчанию)
        int *pLength         // Возвращаемая длина строки
      );

Тип указателя на эту функцию

RDS_SSSpI (для UTF8) или RDS_WsWsWspI (для UTF16)

Параметры

FileName(RDSCSTR,RDSWCSTR,RDSXCSTR)
  Указатель на строку с полным путем к файлу. Если начало этого пути совпадет с одним из стандартных путей RDS (см. функцию rdsGetSystemPath), вместо этого пути будет подставлена одна из символических констант.
AltDefPath(RDSCSTR,RDSWCSTR,RDSXCSTR)
  Указатель на путь по умолчанию, который нужно удалить из полного пути. В зависимости от значения этого параметра, сокращенный путь формируется следующим образом:

  AltDefPath | Формирование сокращенного пути
  --- | ---
  NULL | Если начало FileName совпадает с путем к папке, в которой находится загруженная в данный момент схема, эта часть пути будет удалена. Таким образом, в сокращенном пути останутся только подпапки в папке схемы и само имя файла.
  путь к папке | Если начало FileName совпадает с AltDefPath, AltDefPath удаляется из сокращенного пути. Таким образом, в сокращенном пути останутся только подпапки в AltDefPath и само имя файла.
  пустая строка | Сравнение начала FileName с какими-либо путями не производится.

pLength(int*)
  Указатель на целую переменную, в которую функция запишет длину строки получившегося сокращенного пути к файлу. Если вызвавшей программе не нужно это значение, в pLength можно передать NULL.

Возвращаемое значение

Указатель на созданную в динамической памяти строку, содержащую сокращенный путь к указанному файлу. Если получить этот путь невозможно, возвращается NULL.

Примечания

Динамическая строка, созданная функцией rdsGetRelFilePath, должна быть обязательно освобождена вызовом rdsFree.

Функцию rdsGetRelFilePath чаще всего используют для того, чтобы хранить в параметрах блоков сокращенные относительные пути вместо полных. В этом случае перенос папки со схемой на другую машину или в другую папку не приводит к потере работоспособности схемы, поскольку все пути в параметрах блоков будут указаны относительно расположения файла схемы.

См. также

rdsGetFullFilePath, rdsGetSystemPath, rdsFree.