Recientemente volvi al ruedo con Delphi y con C++. Hacía años que no me sentaba a programar en estos lenguajes con seriedad.
Me he llevado buenas sorpresas, la primera y mas importante para mi es que no me olvide demasiado de ellos.
La segunda, es que a pesar de necesitar 2 actualizaciones, se siente un producto mucho mas solido y confiable que versiones anteriores.
En cuanto a caracteristicas del lenguaje, Delphi 2009 propone muchas soluciones nuevas como código generico (referencias a procedimientos y funciones, cosa que yo desconocia).
Pero aqui el tema se trata de caracteres y sobre todo de sorpresas no tan gratas.
Delphi 2009 soporta UNICODE. Eso es lo que no sabia con certeza y me trajo varios dolores de cabeza.
Bien aqui va la explicación a modo de telegrama:
- Situación: Tenes variables de tipo char (o pchar si hablamos de punteros), estas completamente seguro que ocupan 1 byte
- Revelación: Estas equivocado, ahora los char no son ansichar, son widechar!!!! 2 bytes!!
- Solución: Cambiar los char por ansichar 
Me di cuenta de este error al tratar de leer el ID3v1 de varios archivos MP3, leia el bloque de 128bytes y lo guardaba en un string (al final ya estaba desesperado), y obtenia caracteres en CHINO o en JAPONES!!!
Problema absurdo ya que con C++Builder 2009, no tenia problemas, con java y con php tampoco (voy a publicar un articulo sobre esto en el club).
Definitivamente, como casi todos los problemas complicados en programación, se debe a los pequeños detalles que no son faciles de ver.
Entonces recapitulemos
1 char = 1 widechar = 2 bytes
1 ansichar = 1 byteTeniendo eso en claro, es facil resolver los problemas que unicode nos presenta con codigo viejo.
A traducir todos nuestros viejos programas a Delphi 2009, Vale la pena!
Saludos!