Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Configurar modo consola

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Configurar modo consola Responder citando

Estoy haciendo un programita en modo consola MS-DOS, para ayudar a un estudiante de C, y me encuentro con pequeño problema; si con putch saco un caracter por la consola con un acento (á), sale otro caracter ASCII ¿como se puede configurar la tabla ASCII desde un progama en C para que salga la tablas ASCII que yo quiero?

Gracias..
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Podrías convertir el carácter con la función "CharToOem" del API antes de mostrarlo en la consola. Por ejemplo:
Código:
#include <windows.h>
#include <conio.h>

char* str = "á";
CharToOem(str, str);
putch(str[0]);


O bien usar la función "SetConsoleOutputCP" del API para indicar que página usar. Por ejemplo:
Código:
#include <windows.h>
#include <conio.h>

SetConsoleOutputCP(1252);
putch('á');
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

_Leo escribió:

O bien usar la función "SetConsoleOutputCP" del API para indicar que página usar. Por ejemplo:
Código:
#include <windows.h>
#include <conio.h>

SetConsoleOutputCP(1252);
putch('á');


Muchisimas gracias Leo. Estaba volviendome loco. He intentado cambiar el fichero config.nt y no ha habido manera. He reiniciado hoy el pc como dos millones de veces y nada.
Por otra parte prefiero usar SetConsoleOutputCP, quiero hacer un programa lo más ANSI C que pueda (es para una estudiante) y esto queda como un poco más disimulado.

Lo dicho Leo. Mil gracias. Si te vienes algún día a Pamplona (no sé, Sanfermín o así), tienes una borrachera de mi cuenta.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

_Leo escribió:

SetConsoleOutputCP(1252);
putch('á');
[/code]


Ah! y otra razón para usarla. Usando esta función el printf también coge los caracteres OEM.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Pues mira que curioso. La función SetConsoleModeCP deja de funcionar si pones la ventana en pantalla completa.

En cualquier caso la invitación, Leo, sigue en pie.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Sigo con mi rollo. En la ayuda pone :

Specifies the identifier of the code page to set. The identifiers of the code pages available on the local computer are stored in the registry under the following key.


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage

Así que he probado casi todos los CodePage que pone ahí y no ha habido forma. Una vez que le pones la ventana a tamaño completo los caracteres vuelven a perderse.
Hummmmm, estas cosas de windows...
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Ni idea de porque se pierde, pero con la primera opción funciona, aunque claro que no es tan comodo andar convirtiendo...
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Es más entretenido todavía. Ahora cuando le doy a ventana completa la zona visible se ha desplazado hacia la derecha ¡en todas las ventanas de consola! sea cual sea el programa.
Estoy empezando a sospechar que no es nada bueno tocar el config.nt.

Gracias Leo!, de todas formas.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.