Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problema con CharToOem (https://www.clubdelphi.com/foros/showthread.php?t=92997)

newtron 14-04-2018 13:26:52

Problema con CharToOem
 
Hola a tod@s.

Estoy intentando migrar de Delphi 2007 a Berlin un código hecho por otros y me encuentro un problema en una parte que se dedica a la impresión en modo texto.

El código original, que funciona correctamente en Delphi 2007 y que no entiendo muy bien, es el siguiente (extracto):

Código Delphi [-]
var
    Linea:       String;
    LineaLeida:  Array [0..1024] of Char;
    LineaOEM:    Array [0..1024] of Char;
begin
    ...
    StrPCopy(Addr(LineaLeida), Linea);
    CharToOEM(LineaLeida, LineaOEM);
    Linea := StrPas(LineaOEM);

esto creo que lo que hace es preparar la cadena de caracteres de la variable "linea" para imprimirla de forma correcta en una impresora matricial. Cuando hablo "de forma correcta" me refiero a los acentos y caracteres especiales.

El tema es que cuando compilo esto en Berlin me da error en el "CharToOem" que dice:

E2010 Incompatible types: 'PAnsiChar' and 'array[0..1024] of Char'

¿Alguna idea?

Gracias y un saludo

Casimiro Notevi 14-04-2018 14:56:16

Debe venir por el asunto del unicode.
Seguramente tendrás que cambiar todos los strings a ansistrings, pchar a ansipchar, etc.

newtron 14-04-2018 19:52:34

Efectivamente.

He tenido que declarar la variable "linea" como AnsiString y sustituir esas tres lineas de código por:

CharToOemA(PAnsiChar(Linea), PAnsiChar(Linea));

Gracias y un saludo

ElKurgan 16-04-2018 08:18:57

Gracias por compartir la solución

Saludos


La franja horaria es GMT +2. Ahora son las 16:37:51.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi