Pregunta

Tengo un proyecto bastante grande (freeware) escrito con Delphi 2007 que está utilizando tanto el TntUnicodeControls y la biblioteca TntLXControls y tengo la intención de pasar a Delphi 2009.

Por desgracia estoy usando esas bibliotecas de todo el mundo en mi proyecto:

  • repuesto para VCL controla para proporcionar capacidad de Unicode
  • Win32 API envolturas (sobre todo para comparar cadenas)
  • Las mejoras en las funciones de TntLXForms, TntLXRegistry, ...
  • componentes
  • de terceros que utilizan TntControls. (VirtualTrees, SpTBXLib, las actualizaciones para D2009 están disponibles)

¿Tiene alguna experiencia y / o sugerencias en portar un proyecto de Delphi 2009. ¿Es aconsejable primer interruptor con los controles (comercial) TMS Unicode?

¿Fue útil?

Solución

puedo ayudar con algo de esto, ya que estoy portar una aplicación C ++ Builder que utiliza TNT desde 2007 hasta 2009. El cambio a Unicode en D2009 está vencida y bienvenidos. Sin embargo, es lamentable que la transición es probablemente más fácil para aquellos que no han necesitado Unicode en el pasado, y probablemente todavía no lo hacen. Si, como yo, se necesitaba Unicode y utilizó un gran control TNT de Troy Wolbrink a proporcionarla, usted tiene un trabajo bastante más compleja ...

La buena noticia es que hay una nueva versión de TNTControls de TMS Software cuales apoya D2009. No he mirado en esto, pero se espera que es sólo una capa de 'fachada' sobre los componentes nativos VCL para facilitar la portabilidad. Me gustaría considerar que si sus otras bibliotecas se pueden reconstruir a usarlo.

Sin embargo, puede ser mejor volver a los controles nativos VCL, y la razón es tipos de cadenas. control de TNT siempre han utilizado WideString para pasar las cadenas Unicode de ida y vuelta, y usted bien puede haber uso WideString dispersos a través de su propio código. Esto funciona, pero no es ideal como WideString realmente sólo debe ser utilizado para la interoperabilidad COM, ya que 'envuelve' del tipo COM BSTR. cadenas Unicode nativas en D2009 son de referencia contado y deben ser significativamente más rápido.

Si usted decide sustituir los componentes de TNT con los nativos VCL, puede utilizar GExperts "Reemplazar componentes" comando - o, tal vez más fácil, hacer una búsqueda y reemplazo en su .dfm y archivos .pas (que sí tienen en forma de texto, no te) para reemplazar TTNT con T.

Otros consejos

Instalar GExperts; hay "Sustituir componente" complemento IDE que puede ayudar a convertir a TTntXXX TXXXX controles. Pruebe, por una vez, y si está bien simplemente marque "Reemplazar llega a todas partes en el proyecto".

SpTbx y VirtualTrees sólo puede volver a compilar - ambos D2009 apoyo.

Si ha utilizado envolturas WinAPI sólo para llamar a la API Unicode-s que deben trabajar en D2009 también.

Eso te deja con controles TntLX (TntLXForms, TntLXRegistry, ...). Ya que no son compatibles, puede ser que es buen momento para cambiar de todos modos.

Yo recomiendo los siguientes recursos:

Delphi 2009 Handbook Capítulo 3

de Marco Cantu (Trasladar a Unicode) http://www.marcocantu.com/dh2009/

artículos

Nick Hodges (Delphi en un mundo Unicode) http://blogs.codegear.com/nickhodges/2008/11/20/ 39149

Creo que de cualquier manera que va a ser un montón de trabajo. Probablemente más que si no hubiera hecho todo el trabajo para que sea compatible con Unicode antes. Personalmente me olvide de los controles TMS Unicode, y volver a la VCL. Se ahorrará más dolor en el futuro. (Nada en contra de esos controles, le importaría.)

Asimismo, recuerda, la cadena de ese D2009, no es lo mismo que WideString de D2007 cual se haya usado, sin duda, en su aplicación. Así que todas las instancias de WideString, que haya cambiado tan diligentemente de cadena (que se AnsiString), tienen que volver de nuevo a la cadena (que ahora se UnicodeString).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top