2009-10-21 16 views
16

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 oído advertencias sobre Unicode con 2010 - ¿Alguien tiene experiencia? y o sugerencias?Delphi Conversion Unicode Issues

Respuesta

1

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

Realmente la transición más preocupante es 2007_or_earlier -> 2009_or_later.

hay un montón de discusiones/entradas de blog al respecto. puedes leer, leer, leer ... o puedes comenzar & ver qué pasa. (Hice algunos de los dos). Estoy seguro de que hay problemas de "desbordamiento de pila" que discuten su pregunta. No pretendo dar una descripción detallada de lo que podría pasar.

simplemente no es tan aterrador como parece.

18
+3

No olvide el La sesión de Unicode que presenté en CodeRage4 contiene aún más material de referencia: http://wiert.wordpress.com/2009/09/11/coderage-4-session-using-unicode-and-other-encodings-in-your- programs-chat-and-qa-transcripts/ –

+0

@Jeroen, gran video, agregado;) – RRUZ

3

Usted encontrará algunas respuestas útiles en estas preguntas StackOverflow:

Move project from Delphi 3 to Delphi 2010

When and Why Should I Use TStringBuilder?

Convert function to delphi 2009/2010 (unicode)

Unicode problems with Delphi 2009/2010 and windows API calls

También, para lo que vale, he comprado Marco Cantu's Delphi 2009 Handbook. Era todo lo que necesitaba para hacer una conversación relativamente fluida de Delphi 4 a Delphi 2009 en solo unas pocas semanas.

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

que hago, sin embargo, recomendamos que asegurarse de que sus paquetes de 3 ª parte tienen un Delphi 2009 actualización, o puede que tenga algunas dificultades reales. La conversión de tu propio código es una cosa. Convertir a alguien más es otro.

Uso dos paquetes de terceros, ambos con código fuente. Ambos tenían actualizaciones disponibles, y el desarrollador de una de ellas escribió que tuvo muchos problemas para actualizar su componente muy complejo al Unicode de Delphi 2009. Le tomó unos meses, pero lo completó. Y como resultado, tuve poco problema con la implementación de su componente cuando hice mi actualización.

1

Aprox 10 conjuntos de componentes de terceros, todos con el 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.

que sigue es lo que he publicado en How do the new string types work in Delphi 2009/2010?:

Ver Delphi and Unicode, un papel blanco escrita por Marco Cantù y supongo The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!), escrito por Joel.

Un escollo es que el Win32 llamada a la API por defecto ha sido asignada para utilizar la versión en lugar de la versión A (ANSI) W (cadena de ancho), por ejemplo ShellExecuteA Si el código está haciendo código puntero complicado asumir disposición interna de AnsiString , se romperá Una alternativa es sustituir PChar con PAnsiChar, Char con AnsiChar, string con AnsiString, y anexar A al final de la llamada API de Win32 para esa parte del código. Después de que el código realmente compila y se ejecuta normalmente, puede refactorizar su código para usar string (UnicodeString).

1

Debo añadir este artículo de Carey Jensen a otros mencionados. Está etiquetado: "Delphi Unicode Migration for Mere Mortals: Stories and Advice from the Front Lines" (en inglés). http://www.danysoft.com/free/delphiunicodemigration.pdf

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

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

0

Otro punto a cuidar, es el uso de tipos de variante con cuerdas y la prueba de la función VarType para cadenas: es necesario utilizar varUString en lugar de varString.

Suponiendo AValue es de tipo Variant y ha de ser asignado un valor de cadena Unicode, el siguiente no funcionará:

if VarType(AValue) = varString then ... 

y necesita ser cambiado a

if VarType(AValue) = varUString then ...