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.