Или от того что вы поменяете Case на If код начнет лучше работать?
Не надо всё утрировать!
Вопрос -- что не так?
Вопрос зачем?
Length(str) = 10 (1234567890);
Pos = 2; это 123
Count = 5 это -2 с переходом через ноль.
То есть Pos=0 Count = 3(012) = строка(123)
В чём глубокий смысл Length(str) - Count - Pos + 2; ?
Длина строки нас не волнует и не нужна.