Все гораздо проще.
Код:
function ExtractVals(AStr : String) : String;
begin
AStr := Copy(AStr, Pos(':',AStr)+1,Length(AStr) - Pos(':',AStr));
Result := Copy(AStr,1,Pos(':',AStr)-1);
end;
Алгоритм:
1. Отрезаем все с начала до первого двоеточия, включая само двоеточие, и выкидываем (т.е. берем хвост).
2. Вырезаем в результат с первого символа до двоеточия (второго, первое уже выкинули), не включая само двоеточие.
Это если я правильно понял задачу. Твой код не смотрел, т.к. больно ты там накрутил, а задача то элементарная.