Y at-il une fonction Delphi D2010 comme PosEx qui trouve une sous-chaîne dans une chaîne à partir de la fin de la chaîne?Toute fonction Delphi intégrée comme PosEx qui trouve une sous-chaîne commençant à l'arrière de la chaîne?
Je supprimer tous les appels à la bibliothèque FastStrings et l'une des fonctions que j'utilisais était FastPosBack:
function FastPosBack(const aSourceString, aFindString : AnsiString; const aSourceLen, aFindLen, StartPos : Integer) : Integer;
J'ai trouvé LastDelimiter mais ce n'est pas tout à fait la même chose, car il ne trouve que le dernier delimiter et je ne peux pas spécifier une position de départ.
Merci!
Mise à jour: Après un commentaire DR, je l'ai créé cette fonction:
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;
est-il un moyen plus efficace de le faire? Sur un cycle de boucle de 1000000, Pos prend 47ms tandis que FastPosBack prend 234ms à compléter.
Juste par curiosité: comment votre look test comme exactement? – jpfollenius
J'appelle GetTickCount, suivi d'une boucle 1000000 de l'appel à la fonction, puis obtenir la différence, GetTickCount - TickCount. – smartins
J'étais plus intéressé par ce que les chaînes que vous passez aux fonctions de test ... – jpfollenius