No se olviden de los siguientes detalles:
- Puede haber comas dentro de los valores, es decir encerradas entre comillas y hay que tomarlas como parte del dato
- Puede haber comillas dentro de los valores, al igual que las comas hay que tomarlas como datos. Dos comillas seguidas indican una comilla de dato.
Mi componente FileReader, tiene la lógica para "desmenuzar" un CSV. Nunca he publicado el código porque fue de las primeras cosas que hice en Delphi y creo que si lo veo ahora debe ser vergonzoso.

Si estoy seguro que funciona sin problemas, ya que lo he utilizado en infinidad de aplicaciones.
Saludos!