| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
laremi400 Master

Registrado: 12 May 2004Mensajes: 179
|
Publicado: Vie 06 May, 2005 9:45 am Asunto: Configurar modo consola |
|
|
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 |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Mar 10 May, 2005 12:44 pm Asunto: |
|
|
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 |
|
 |
laremi400 Master

Registrado: 12 May 2004Mensajes: 179
|
Publicado: Mar 10 May, 2005 1:22 pm Asunto: |
|
|
| _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 |
|
 |
laremi400 Master

Registrado: 12 May 2004Mensajes: 179
|
Publicado: Mar 10 May, 2005 1:24 pm Asunto: |
|
|
| _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 |
|
 |
laremi400 Master

Registrado: 12 May 2004Mensajes: 179
|
Publicado: Mar 10 May, 2005 1:57 pm Asunto: |
|
|
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 |
|
 |
laremi400 Master

Registrado: 12 May 2004Mensajes: 179
|
Publicado: Mar 10 May, 2005 2:24 pm Asunto: |
|
|
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 |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Mar 10 May, 2005 5:34 pm Asunto: |
|
|
| Ni idea de porque se pierde, pero con la primera opción funciona, aunque claro que no es tan comodo andar convirtiendo... |
|
| Volver arriba |
|
 |
laremi400 Master

Registrado: 12 May 2004Mensajes: 179
|
Publicado: Mie 11 May, 2005 7:49 am Asunto: |
|
|
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 |
|
 |
|