Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-04-2018
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: Apr 2007
Ubicación: Motril, Granada
Posts: 2.987
Poder: 14
newtron Va camino a la fama
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
__________________
Be water my friend.
Responder Con Cita
  #2  
Antiguo 14-04-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: Sep 2004
Ubicación: En algún lugar.
Posts: 28.579
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Debe venir por el asunto del unicode.
Seguramente tendrás que cambiar todos los strings a ansistrings, pchar a ansipchar, etc.
Responder Con Cita
  #3  
Antiguo 14-04-2018
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: Apr 2007
Ubicación: Motril, Granada
Posts: 2.987
Poder: 14
newtron Va camino a la fama
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
__________________
Be water my friend.
Responder Con Cita
  #4  
Antiguo 16-04-2018
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: Nov 2005
Posts: 1.072
Poder: 14
ElKurgan Va por buen camino
Gracias por compartir la solución

Saludos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Error al llamar al procedimiento CharToOem Bagy API de Windows 0 13-09-2004 22:46:02


La franja horaria es GMT +2. Ahora son las 16:27:38.


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