Ya averigué lo que ocurría. Resulta que puse el Next del ADOTable al principio de la interación, con lo que comenzaba en el segundo registro y se saltaba el primero.
Es que estoy acostumbrado a programar en Java, y ahí los resultados de consultas contra una base de datos tienen dos registros extra en blanco, uno al prinicpio y otro al final; con lo que hay que hacer un "next()" antes de comenzar a leer.
Pd: Sí, cambiar cambia en cada iteración, el problema era el que he comentado arriba. Gracias de todos modos