Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Providers
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-07-2016
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: nov 2005
Posts: 1.232
Poder: 20
ElKurgan Va camino a la fama
Errores en XmlTransformProvider

Saludos a todos

En el trabajo tenemos un curioso problema con los archivos XML cargados mediante un XmlTransform de Delphi XE7.

Somos varias personas trabajando con la misma versión de Delphi y en el mismo proyecto, pero para acotar el problema, supongamos que sólo hay dos, el ordenador "A" y el ordenador "B".

El programa es muy simple, sólo carga un XML a través de un archivo ".xtr" de transformación a un ClientDataset y se muestran los datos en un DBGrid.

Sin tocar el archivo XTR para nada, cuando compilamos el visor, dependiendo del ordenador, unas veces muestra los caracteres acentuados y las "ñ" correctamente y otras no. Se trata de un problema sólo al compilar, porque si se compila (por ejemplo) desde el ordenador A, el ordenador B ve en el ejecutable los caracteres acentuados. Sin embargo, si se compila desde el ordenador B ninguno ve los datos correctamente.

Lo gracioso es que todos tenemos la misma versión de Delphi (XE7), y la misma configuración regional de Windows (Windows 10).

¿A que puede deberse este problema?

Saludos
Responder Con Cita
  #2  
Antiguo 29-07-2016
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Poder: 21
gatosoft Va camino a la fama
¿Han revisado los archivos XML generados antes de cargarlos?.. evidentemente parece ser un problema con la codificación dle archivo generado.. uno de ellos debe ser generado con condificación ANSI y el otro con UTF8 (por ejemplo).

No he trabajado el componente que mencionas pero se que tiene una propiedad ENCODING, con la cual puedes controlar o forzar la codificación.

A mi me sucedia algo parecido importando y exportando archivos con un TStringList y lo resolví trabajando con ésta propiedad....

Espero que te sirva... igual nos cuentas
Responder Con Cita
  #3  
Antiguo 14-06-2017
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: nov 2005
Posts: 1.232
Poder: 20
ElKurgan Va camino a la fama
Bueno, perdón por el retraso en contestar, pero no he podido ponerme a ello antes.

Al final el error se produce por una cosa muy tonta:

En Delphi XE2, dentro de la función "StringToVariantArray" del archivo "Datasnap.xmlxform.pas" venía esta línea:

Código Delphi [-]
  Move(M.AsAnsi(S).ToPointer^, PByte(LArray)^, Len);
... Pero en la versión de Delphi XE7 viene así:

Código Delphi [-]
  Move(M.AsUtf8(S).ToPointer^, PByte(LArray)^, Len);
En fin, es posible que efectivamente el XML a parsear no sea un utf-8 válido, pero copiando el archivo pas dentro de los fuentes del proyecto y dejando la función anterior de esta forma funciona:

Código Delphi [-]
//  Move(M.AsUtf8(S).ToPointer^, PByte(LArray)^, Len);
  Move(M.AsAnsi(S).ToPointer^, PByte(LArray)^, Len);   // Apaño en XE7
En fin, gracias por todo, y espero que esta solución le sirva a alguien también.

El tema puede darse por cerrado

Saludos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Error catastrófico con XMLTransformProvider y ClientDataset victortera Providers 3 18-03-2014 17:52:25
Error usando ClientDataSet y XMLTransformProvider - ...must have a top level element lmpadron C++ Builder 1 09-04-2012 22:32:42
Persistir XML con XMLTransformProvider bataola Providers 0 26-07-2007 19:44:39
Errores Delphi 5 sur-se OOP 2 09-05-2005 12:28:51


La franja horaria es GMT +2. Ahora son las 14:01:47.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi