Это должно сделать это:
function GetValueFromDelimitedText(
const s: string;
const Separator: char;
const Index: Integer
): string;
var
i, ItemIndex, Start: Integer;
begin
ItemIndex := 1;
Start := 1;
for i := 1 to Length(s) do begin
if s[i]=Separator then begin
if ItemIndex=Index then begin
Result := Copy(s, Start, i-Start);
exit;
end;
inc(ItemIndex);
Start := i+1;
end;
end;
if ItemIndex=Index then begin
Result := Copy(s, Start, Length(s)-Start+1);
end else begin
Result := '';
end;
end;
В этой версии вы можете указать разделитель, вы, очевидно, передадите ':'
.Если вы запросите элемент за концом, то функция вернет пустую строку.Вы можете изменить это на исключение, если вы предпочитаете.Наконец, я договорился, что в этом примере используется индексация на основе 1, но лично я бы выбрал индексацию на основе 0.