Bienvenido(a), Visitante. Favor de ingresar o registrarse.

Ingresar con nombre de usuario, contraseña y duración de la sesión

Foros del Club

Páginas: [1]   Ir Abajo
  Enviar tema  |  Imprimir  
Autor Tema: Delphi 2009 - Problemas con UTF8, caracteres extranos  (Leído 772 veces)
0 Usuarios y 2 Visitantes están viendo este tema.
CID
Administrador
Legend
*****

Prestigio: 22
Desconectado Desconectado

Sexo: Masculino
Estudiante de: Arte de la informática
Título universitario: Programador
Profesión: Desarrollador
Mensajes: 1136



WWW
Lenguajes:
Varios
Bases de datos:
Varios
« en: 20/03/2009, 23:55:36 »

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 Lengua


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 byte


Teniendo 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!
En línea

Foros del Club
   

 En línea
Páginas: [1]   Ir Arriba
  Enviar tema  |  Imprimir  
 
Ir a: