PDA

Ver la Versión Completa : Problema con CharToOem


newtron
14-04-2018, 12:26:52
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):


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, 13: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, 18: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, 07:18:57
Gracias por compartir la solución

Saludos