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 |
¿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 |
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: ... Pero en la versión de Delphi XE7 viene así: 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: En fin, gracias por todo, y espero que esta solución le sirva a alguien también. El tema puede darse por cerrado Saludos |
La franja horaria es GMT +2. Ahora son las 20:05:51. |
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