Un consejo más. Dado que las constantes ftString y ftInteger son de un tipo enumerado (TFieldType), y por tanto valores
ordinales, la doble condición del
If puede reducirse a:
Código Delphi
[-]If DataModuleCiuda.ADODataSetCiudad.Fields [i].DataType In [ftString, ftInteger] Then
Esa sola condición pregunta si el valor de la propiedad DataType es uno de los del conjunto expresado entre corchetes detrás la palabra reservada
In.
Saludos.