Существует ли какая-либо функция Delphi D2010, такая как PosEx, которая находит подстроку в строке, начиная с конца строки?
Я удаляю все вызовы библиотеки FastStrings, и одной из функций, которые я использовал, был FastPosBack:
function FastPosBack(const aSourceString, aFindString : AnsiString; const aSourceLen, aFindLen, StartPos : Integer) : Integer;
Я нашел LastDelimiter, но это не совсем то же самое, поскольку он находит только последний разделитель, и я не могу указать начальную позицию.
Спасибо!
Обновление : После комментария DR я создал эту функцию:
function FastPosBack(const aSourceString, aFindString : String; const aSourceLen, aFindLen, StartPos : Integer) : Integer;
var
RevSourceString, RevFindString: string;
begin
RevSourceString := AnsiReverseString(aSourceString);
RevFindString := AnsiReverseString(aFindString);
Result := Length(aSourceString) - PosEx(RevFindString, RevSourceString, StartPos) + 1;
end;
Есть ли более эффективный способ сделать это? В цикле 1000000 Pos занимает 47 мс, а FastPosBack - 234 мс.