Entonces sería al contrario... mira como se codifica el fichero que sale de Delphi XE5. Si lo miras byte a byte, podrás ver si tiene algo delante (BOM).
Por ejemplo, podría ser que el fichero empiece con EF BB BF si se tratara de UTF8 y que Delphi 6 los interpretaría como 3 caracteres que se deben procesar. Así, el primer campo de la importación sería "43" que daría un error de conversión si se espera un número.
Podrías preprocesar el fichero con algo así y generar un fichero temporal que luego importarás.
Código Delphi
[-]
var
Registro : string;
Datos : TextFile;
[...]
AssignFile(Datos, OpenDialog1.FileName);
Reset(Datos);
CaracteresIgnorar := 0;
try
while not EOF(Datos) do
begin
ReadLn(Datos, Registro);
if (PrimeraLinea) then
begin
if (Ord(Registro[1]) = $EF) and (Ord(Registro[2]) = $BB) and (Ord(Registro[3]) = $BF) then
CaracteresIgnorar := 3;
Registro := copy(Registro,CaracteresIgnorar, Length(Registro));
end;
sl.Add(Registro);
end; sl.SaveToFile(FicheroTemporal);
[...]