En la primera carga el ID de cada marca coincide con su índice en la lista:
Lista:
Index=0 Marca.ID=0
Index=1 Marca.ID=1
Index=2 Marca.ID=2
(la primera vez, el ID de cada marca -segunda columna- coincide con el INDEX de la lista, por eso no tienes problemas en acceder)
Después de hacer el clear, Los índices de la vuelven a comenzar por 0, mientras que el ID de las marcas sigue la progresión anterior. La lista después de hacer el Clear y crear nuevas marcas queda así:
Index=0 Marca.ID=3
Index=1 Marca.ID=4
Index=2 Marca.ID=5
Por eso, cuando intentas acceder a los elementos de la lista así (utilizando el ID):
Código Delphi
[-]
...
GMMark2.items[linkedcomponent.id].title
...
Utilizando, por ejemplo la marca con ID=4, te da un "out of rande", porque el íncide de la lista=4 no existe.