En lugar de recorrer toda la cadena, yo dejaría algo como:
Código Delphi
[-]
try
numero := IntToStr(copy(eDNI.Text, inicio, longitud));
except
on EConvertError do
ShowMessage('Ha introducido una letra donde solo deben ir números');
end;
Código mucho mas sencillo y fácil de leer...
Hasta luego.