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
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.
Hay muchos recursos disponibles que puede leer y que ayudarán en la migración de Delphi 6 a Delphi 2009/2010 (Unicode).
Puede usar estos artículos como guía.
- Unicode Migration Statistics Tool (Esta utilidad esperamos que pueda ayudar en la recogida de estadísticas útiles de lo duro (o no) sería migrar sus aplicaciones antiguas a Unicode.)
- Delphi 2009 and Unicode
- Delphi 2009 strings explained by example
- Upgrading a major project to Delphi 2009
- Delphi and Unicode
- Dr. Bob Delphi 2009 Unicode
- Delphi 2009 - Unicode in Type Libraries
- On Strings and Unicode in Delphi 2009
- Delphi in a Unicode World Part I: What is Unicode, Why do you need it, and How do you work with it in Delphi?
- Delphi in a Unicode World Part II: New RTL Features and Classes to Support Unicode
- Delphi in a Unicode World Part III: Unicodifying Your Code
- CodeRage 4 : Using Unicode and Other Encodings in your Programs
adiós.
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.
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 deAnsiString
, se romperá Una alternativa es sustituirPChar
conPAnsiChar
,Char
conAnsiChar
,string
conAnsiString
, 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 usarstring
(UnicodeString
).
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
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 ...
- 1. delphi array of string stringlist conversion
- 2. Python Type Conversion
- 3. Transmitir una aplicación Delphi 2006 unicode a Delphi 2009
- 4. C++ Overloading Conversion Operators
- 5. Aplicación de consola Unicode en Delphi 2009
- 6. Delphi 2009 y Firebird 2.1 = Unicode completo?
- 7. Delphi 2009 + Unicode + tamaño de char
- 8. Trabajando con cadenas Unicode en Delphi 7
- 9. mb_convert_encoding issues
- 10. publish_actions issues
- 11. UIRefreshControl issues
- 12. Safe String to BigDecimal conversion
- 13. LINQ to SQL Conversion Overflows
- 14. Oracle current_timestamp to seconds conversion
- 15. Reactive Extension - Observable.FromEvent typecast conversion
- 16. ActionBarSherlock getMenuInflater issues
- 17. Fluidez NHibernate LazyLoad Issues
- 18. Scala Parser Issues
- 19. C varargs - va_copy issues
- 20. .NET ReaderWriterLockSlim issues
- 21. NSUserDefaults and KVO issues
- 22. NodeJs require ('./ file.js') issues
- 23. Jetty Classpath issues
- 24. jQuery $ (document) .keydown() issues
- 25. debugging osgi classloader issues
- 26. Java JPanel redraw issues
- 27. Git Renaming Issues
- 28. Awk if else issues
- 29. http connection timeout issues
- 30. PDFkit javascript issues
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/ –
@Jeroen, gran video, agregado;) – RRUZ