Ver Mensaje Individual
  #24  
Antiguo 16-06-2014
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.738
Reputación: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
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);
                 {En la primera linea debo ver si es un archivo UTF y ver cuantos caracteres debo ignorar}
                 if (PrimeraLinea) then
                 begin
                    if (Ord(Registro[1]) = $EF) and (Ord(Registro[2]) = $BB) and (Ord(Registro[3]) = $BF) then {Posiblemente UTF8}
                       CaracteresIgnorar := 3;

                    Registro := copy(Registro,CaracteresIgnorar, Length(Registro));
                 end;
                 // Agrego Registro a un StringList
                 sl.Add(Registro);
              end; // while
              // Grabo el StringList a un fichero Temporal
              sl.SaveToFile(FicheroTemporal);

              // importo el fichero temporal
[...]

Última edición por duilioisola fecha: 16-06-2014 a las 16:00:08.
Responder Con Cita