Hola, siguiendo el codigo de Caro, el ultimo marcador te aparece porque el string que comparas es el slFile[i], mientras que el que añades es slFile[i+1]. Esta solución es buena para evitar incluir el slFile[n] = '*inicio', pero falla en la otra. Una manera de corregirlo seria continuando el loop si se encuentra algun marcador...
Código Delphi
[-]
....
if slFile[i]='*Inicio' then
begin
flgInicio := True;
continue;
end;
if (slFile[i]='*Fin' then
begin
flgFin := True;
continue;
end;
if (flgInicio=True) and (flgFin=False) then slFileNuevo.Add(slFile[i]); ...
saludos.