technologies systems mexico greece empresa diesel brasil autopartes aptiv delphi
CodeRage 4: Uso de Unicode y otras codificaciones en sus programas

systems - Problemas de Unicode de la conversión de Delphi



delphi technologies (6)

Tenemos una gran aplicación comercial que queremos convertir de Delphi 6 a 2010. Aproximadamente 10 conjuntos de componentes de terceros, todos con código fuente ... He escuchado advertencias sobre Unicode con 2010: ¿Alguien tiene experiencia o sugerencias?


Aproximadamente 10 conjuntos de componentes de terceros, todos con código fuente.

Una cosa que agregaría es que si el componente no es compatible con Delphi 2009/2010, no intente actualizarlo pirateando el código.

Lo siguiente es lo que publiqué en ¿Cómo funcionan los nuevos tipos de cadenas en Delphi 2009/2010? :

Vea Delphi y Unicode , un documento escrito por Marco Cantù y supongo que The Absolute Minimum Todo desarrollador de software debe saber absolutamente Absolutamente, positivamente sobre Unicode y los conjuntos de caracteres (¡sin excusas!) , Escrito por Joel.

Un inconveniente es que la llamada a la API de Win32 predeterminada se ha asignado para usar la versión W (cadena ancha) en lugar de la versión A (ANSI), por ejemplo, ShellExecuteA . Una alternativa es sustituir PChar con PAnsiChar , Char con AnsiChar , string con AnsiString y anexar A al final de la llamada a la API de Win32 para esa parte del código. Después de que el código realmente se compile y se ejecute normalmente, puede refactorizar su código para usar la string ( UnicodeString ).


Debo agregar este artículo de Carey Jensen a otros mencionados. Está etiquetado como: "Migración de Unphode de Delphi para mortales mortales: historias y consejos de primera línea" (en inglés). http://www.danysoft.com/free/delphiunicodemigration.pdf

Como puedes ver en el título, encontrarás muchas experiencias, consejos y sugerencias. Creo que es la respuesta a tu pregunta. Después de leerlo cuidadosamente, seguramente sabrá qué hacer a continuación. :)

Se encuentra en: http://www.danysoft.com/productos/migrar-aplicaciones-a-delphi-xe-o-cbuilder-xe.html


Encontrarás algunas respuestas útiles en estas preguntas de :

Mueve el proyecto de Delphi 3 a Delphi 2010

¿Cuándo y por qué debo usar TStringBuilder?

Convertir la función a delphi 2009/2010 (unicode)

Problemas de Unicode con Delphi 2009/2010 y llamadas a la API de Windows

Además, por lo que vale, compré el Manual Delphi 2009 de Marco Cantu . Era todo lo que necesitaba para hacer una conversión relativamente suave de Delphi 4 a Delphi 2009 en solo unas pocas semanas.

texto alt http://www.marcocantu.com/dh2009/D2009Handbook_small.jpg

Sin embargo, le recomiendo que se asegure de que sus paquetes de terceros tengan una actualización de Delphi 2009 o puede tener algunas dificultades reales. Convertir tu propio código es una cosa. Convertir a alguien más es otro.

Yo uso dos paquetes de terceros, ambos con código fuente. Ambos tenían actualizaciones disponibles, y el desarrollador de uno de ellos escribió que tenía muchos problemas para actualizar su muy complejo componente al Unicode de Delphi 2009. Le tomó algunos meses, pero lo completó. Y como resultado, tuve pocos problemas con mi implementación de su componente cuando realicé mi actualización.


Hay muchos recursos disponibles que puedes leer y que te ayudarán en la migración de Delphi 6 a Delphi 2009/2010 (Unicode).

Puedes usar estos artículos como guía.

Adiós.


He estado en la misma circunstancia recientemente. En su mayoría, debe prestar atención a los "bordes" de la aplicación. Los archivos INI, E / S de archivos, archivos de registro, etc. ganan las llamadas a la API del trabajo de Delphi, ya que ahora se han conectado a las llamadas a la API de Unicode. revise cada conjunto de componentes de terceros para asegurarse de que estén al menos listos para Delphi 2009 ... mejor aún 2010. incluso mi uso de las bases de datos simplemente no fue un problema ... casi todo funcionó de inmediato. simplemente no era un gran problema. todo lo que se basa en el tamaño de un personaje debe ser revisado.

realmente la transición de mayor preocupación es 2007_or_earlier -> 2009_or_later.

Hay muchas discusiones / entradas de blog al respecto. podría leer, leer, leer ... o podría comenzar y ver qué sucede. (Hice algunos de los dos). Estoy seguro de que hay problemas de "desbordamiento de pila" que discuten tu pregunta. No pretendo dar una descripción detallada de lo que podría suceder.

Simplemente no es tan aterrador como suena.


Otro punto a tener en cuenta es el uso de tipos Variant con cadenas y la función VarType que prueba las cadenas: es necesario usar varUString en lugar de varString.

Suponiendo que AValue es de tipo Variante y se le ha asignado un valor de cadena Unicode, lo siguiente no funcionará:

if VarType(AValue) = varString then ...

y necesita ser cambiado a

if VarType(AValue) = varUString then ...