Объясняю в чём был прикол:
1. В конце цикла должно быть тоже самое что и перед ним т.е.
   curPos := PosFrom('estimation>', HTML, EndPos);
   EndPos := PosFrom('</a>', HTML, curPos);
  end;
2. Даже если заполняешь только Title, нужно передавать значения во все поля
AddConnection(Copy(HTML, curPos, EndPos - curPos), '', '', '', '');
3. Надо следить чтобы не получилось бесконечного цикла. Если бы было
curPos := PosFrom('estimation>', HTML, curPos) + Length('estimation>');то в 
while (curPos > 0) AND (curPos < PosFrom('</table>', HTML, EndPos)) do begincurPos всегда будет > 0 и если </table> дальше не встречается, то цикл будет работать вечно.
По этому правильно вот так:
  
 curPos := PosFrom('estimation>', HTML, curPos);
  EndPos := PosFrom('</a>', HTML, curPos);  
  while (curPos > 0) AND (curPos < PosFrom('</table>', HTML, EndPos)) do begin
   curPos := curPos + Length('estimation>');