![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
El problema que mencionas ocurre porque cuando la opción "Beta: Usar Unicode UTF-8 para soporte de lenguaje mundial" está activada en Windows, el sistema cambia el codepage predeterminado a UTF-8. Esto afecta cómo Delphi maneja cadenas en componentes VCL y en la interacción con APIs de Windows, especialmente si la aplicación asume que el codepage es ANSI.
Soluciones posibles: 1. Forzar el uso del Codepage ANSI en la aplicación Puedes establecer explícitamente el codepage ANSI en el inicio de la aplicación. Para ello, usa:
Esto obliga a que la aplicación utilice el codepage estándar para español latinoamericano. 2. Evitar dependencias de ANSI y trabajar en Unicode nativo Si tu código aún usa AnsiString o String en versiones antiguas, conviene hacer una migración a UnicodeString (que es el String predeterminado en Delphi 10.4). Evita conversiones innecesarias entre Unicode y ANSI. 3. Usar TEncoding para conversiones de texto Si necesitas manipular archivos o comunicación con la base de datos, usa TEncoding para asegurarte de que las cadenas se procesen correctamente:
Si interactúas con bases de datos, asegúrate de que estén configuradas correctamente para Unicode o usa conversiones adecuadas. 4. Modificar el manifest de la aplicación Si la opción de Windows está activada y afecta la compatibilidad de tu aplicación, puedes evitar que Windows la fuerce editando el manifest de la aplicación. Abre el archivo .dproj de tu proyecto. Busca la sección <dpiAware> y añade esta línea dentro de <application>: Código:
<application xmlns="urn:schemas-microsoft-com:asm.v3"> <compatibility> <application> <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/> </application> </compatibility> <windowsSettings> <activeCodePage enabled="false"/> </windowsSettings> </application> Recomendación Si no puedes controlar la configuración de Windows en todas las máquinas, la mejor opción es hacer que tu aplicación trabaje completamente en Unicode (String = UnicodeString), evitar AnsiString, y usar TEncoding para conversiones cuando sea necesario. |
![]() |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Nueva Aplicación Web, ¿Lenguaje a usar? | rabata2001 | Internet | 6 | 27-03-2013 16:42:36 |
porque usar Delphi y no otro lenguaje | flashtkd | Varios | 20 | 11-03-2010 11:40:23 |
Que Lenguaje Usar? | jorllazo | Debates | 50 | 09-03-2010 21:21:35 |
Alternativa a TEXTOUT que soporte Unicode | MDSato | Gráficos | 10 | 20-03-2007 13:36:59 |
![]() |
|