{
- perf 78..94 ms/100KCalls :: ~0.00086ms/Call
- Str : chaine delimitée
- Delimiter : delimiteur a longeur variable (chaine ou caractere)
- Index : index d'interval 1..n de la sous-chaine a extraire
}
function GetStrPart(const Str, Delimiter: String; const Index: cardinal = 1): String;
var I,P1,P2 : integer;
begin
Result := '';
if (posex(Delimiter,Str[1]) = 1) and (Index <= 1) then exit;
P1 := 1;
for I := 1 to Index-1 do begin
P1 := posex(Delimiter, Str, P1);
if P1 = 0 then exit
else P1 := P1 + length(Delimiter);
end;
P2 := posex(Delimiter, Str, P1);
if P2 = 0 then P2 := length(Str) + 1;
Result := copy(Str, P1, P2 - P1);
end;