Часть FINDSTRING(@[User::FileFullPathLDR],"\\",1)
возвращает 0, если FileFullPathLDR не содержит \
.Поскольку вы вычитаете -1, вы можете получить отрицательное значение, если ваша строка не соответствует шаблону или если переменная установлена во время выполнения (у вас может быть пустая строка во время проверки).
Если вам нужно, чтобы она работала и с пустой строкой, вы можете добавить \\
перед ней, если еще нет \\
, используя что-то вроде FINDSTRING(@[User::FileFullPathLDR],"\\",1) == 0 ? "\\"+ @[User::FileFullPathLDR] : @[User::FileFullPathLDR]
Так что всебудет:
REVERSE(
SUBSTRING(
REVERSE(
@[User::FileFullPathLDR]),1,FINDSTRING(REVERSE(FINDSTRING(@[User::FileFullPathLDR],"\\",1) == 0 ? "\\"+ @[User::FileFullPathLDR] : @[User::FileFullPathLDR])
,"\\",1
)-1
)
)
Итак, если \
отсутствует, он просто вернет саму строку.