delphi unicode delphi-2009

Es WideString idéntico a String en Delphi 2009



unicode delphi-2009 (4)

Parece que la respuesta está aquí :

El cambio más espectacular en Delphi 2009 es que el tipo "cadena" ahora es un alias para UnicodeString en lugar de AnsiString.

Obtuve un comportamiento extraño al recompilar algunas aplicaciones en 2009 que usaron varias cadenas en varios puntos.

En una aplicación Delphi 2009, ¿Widestring es idéntico a String?


Otra cosa importante a tener en cuenta es la diferencia de rendimiento.

En el Libro Blanco de Marco Cantu (referido en la respuesta de moodforaday) dice:

"WideString fue (y sigue siendo) no contado de referencia y es extremadamente pobre en términos de rendimiento y flexibilidad (por ejemplo, usa el asignador de memoria global de Windows en lugar del FastMM4 nativo)".

Casi todas las guías de actualización para Delphi 2009 que he visto recomiendan convertir todas las WideStrings a Strings.


Vea este artículo de Marco Cantu que describe el funcionamiento de la cadena (es decir, UnicodeString) en Delphi 2009:

"Libro blanco: Delphi y Unicode"

http://dn.codegear.com/article/38980

Básicamente, es lo que dijo Roddy, pero lleva 27 páginas para entrar en detalles.


No, no son ideníticos.

WideString es solo un contenedor para el tipo de BSTR ActiveX / COM. Lo necesita cuando trabaja con cadenas en ActiveX / COM.

String en Delphi 2009 y posterior es un alias para UnicodeString , que puede contener caracteres Unicode, al igual que BSTR , pero NO es lo mismo que WideString . WideString es asignado por el administrador de memoria COM, y no se cuenta la referencia. UnicodeString es asignado por el administrador de memoria RTL, y se cuenta la referencia, al igual que AnsiString .

Debería usar (Unicode)String siempre que sea posible, y solo usar WideString para interoperabilidad COM, o tratar con bibliotecas heredadas que usan WideString para soporte Unicode.