elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Duda de novato en Free pascal
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Duda de novato en Free pascal  (Leído 8,838 veces)
yako-_-

Desconectado Desconectado

Mensajes: 157


Heroes Del Silencio


Ver Perfil
Duda de novato en Free pascal
« en: 5 Octubre 2010, 01:08 am »

Buenas!!

Mi duda des bien sencilla como puedo imprimir en pantalla en modo consola acentos y Ñ´s en Free Pascal???? los pongo y me muestra caracteres raros. hay alguna librería o algo que re lo permita hacer directamente o tengo que poner en cada letra "char (123)" (el número que sea)

Edito: Otra duda es como puedo cargar una imagen en free pascal? en modo graph o consola un bmp o jpg ¿y música un midi o algo asi?

Gracias un saludo!!!!


« Última modificación: 5 Octubre 2010, 01:14 am por yako-_- » En línea

Para que vivir, pudiendo trabajar los Domingos

                                                                Yako-_-
Khronos14


Desconectado Desconectado

Mensajes: 443


A lie is a lie


Ver Perfil WWW
Re: Duda de novato en Free pascal
« Respuesta #1 en: 5 Octubre 2010, 10:55 am »

Para hacer eso tienes que emplear la API de Windows CharToOemBuffA o CharToOemBuffW. En Delphi sería algo así:

Código
  1. program Project1;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses
  6.  Windows, SysUtils;
  7.  
  8. var
  9.  S: AnsiString;
  10. begin
  11.  S := 'Ejemplo de cadena: ñ, á, í, ó, é';
  12.  CharToOemBuffA(PAnsiChar(S), PAnsiChar(S), Length(S));
  13.  WriteLn(S);
  14.  ReadLn;
  15. end.
  16.  

Saludos.


En línea

d(-_-)b


Desconectado Desconectado

Mensajes: 1.331



Ver Perfil WWW
Re: Duda de novato en Free pascal
« Respuesta #2 en: 5 Octubre 2010, 11:07 am »

Tambien puedes seguir este curso muy bueno.

Curso de Pascal de Nacho Cabanes

Citar
# Curso de Pascal, de Nacho Cabanes - Tema 0 - Introducción.
# Curso de Pascal, de Nacho Cabanes - Tema 1 - Generalidades de Pascal.
# Curso de Pascal, de Nacho Cabanes - Tema 2 - Variables.
# Curso de Pascal, de Nacho Cabanes - Tema 3 - Entrada/Salida básica.
# Curso de Pascal, de Nacho Cabanes - Tema 4 - Operaciones matemáticas.
# Curso de Pascal, de Nacho Cabanes - Tema 5 - Condiciones.
# Curso de Pascal, de Nacho Cabanes - Tema 6 - Bucles.
# Curso de Pascal, de Nacho Cabanes - Tema 7 - Constantes y tipos.
# Curso de Pascal, de Nacho Cabanes - Tema 8 - Procedimientos y funciones.
# Curso de Pascal, de Nacho Cabanes - Tema 9 - Otros tipos de datos.
# Curso de Pascal, de Nacho Cabanes - Tema 10 - Pantalla en modo texto.
# Curso de Pascal, de Nacho Cabanes - Tema 11 - Ficheros (1 - Leer fichero de texto).
# Curso de Pascal, de Nacho Cabanes - Tema 11b - Ficheros (2 - Escribir fichero de texto).
# Curso de Pascal, de Nacho Cabanes - Tema 11c - Ficheros (3 - Ficheros con tipo).
# Curso de Pascal, de Nacho Cabanes - Tema 11d - Ficheros (4 - Ficheros generales).
# Curso de Pascal, de Nacho Cabanes - Tema 12 - Creación de unidades.
# Curso de Pascal, de Nacho Cabanes - Tema 13 - Variables dinámicas (1).
# Curso de Pascal, de Nacho Cabanes - Tema 13b - Variables dinámicas (2).
# Curso de Pascal, de Nacho Cabanes - Tema 14 - Gráficos (1).
# Curso de Pascal, de Nacho Cabanes - Tema 14b - Gráficos (2: las órdenes más habituales).
# Curso de Pascal, de Nacho Cabanes - Tema 14c - Gráficos (3: algunos fuentes de ejemplo).
# Curso de Pascal, de Nacho Cabanes - Tema 14d - Gráficos (4: gráficos con TMT Pascal y FPK Pascal).
# Curso de Pascal, de Nacho Cabanes - Tema 14e - Incluir los ficheros BGI en el EXE.
# Curso de Pascal, de Nacho Cabanes - Tema 15 - Servicios del DOS.
# Curso de Pascal, de Nacho Cabanes - Tema 16 - Programación Orientada a Objetos (1).
# Curso de Pascal, de Nacho Cabanes - Tema 16b - Programación Orientada a Objetos (2).
# Curso de Pascal, de Nacho Cabanes - Tema 16c - Programación Orientada a Objetos (3).
# Curso de Pascal, de Nacho Cabanes - Tema 16d - Programación Orientada a Objetos (4).
# Curso de Pascal, de Nacho Cabanes - Tema 16e - Programación Orientada a Objetos (5).
# Curso de Pascal, de Nacho Cabanes - Tema 16f - Programación Orientada a Objetos (6).
# Curso de Pascal, de Nacho Cabanes - Tema 16g - Programación Orientada a Objetos (7).
# Curso de Pascal, de Nacho Cabanes - Tema 16h - Programación Orientada a Objetos (8).
# Curso de Pascal, de Nacho Cabanes - Tema 17 - El entorno Turbo Vision (1).
# Curso de Pascal, de Nacho Cabanes - Tema 17b - El entorno Turbo Vision (2: Ventanas estándar).
# Curso de Pascal, de Nacho Cabanes - Tema 17c - El entorno Turbo Vision (3: Ventanas de diálogo).
# Curso de Pascal, de Nacho Cabanes - Tema 17d - El entorno Turbo Vision (4: Ventanas de texto).
# Curso de Pascal, de Nacho Cabanes - Tema 17e - El entorno Turbo Vision (5: Un fuente de ejemplo).
# Curso de Pascal, de Nacho Cabanes - Ampliación 1 - Otras órdenes no vistas.
# Curso de Pascal, de Nacho Cabanes - Ampliación 2a - Gráficos sin BGI (1).
# Curso de Pascal, de Nacho Cabanes - Ampliación 2b - Gráficos sin BGI (2).
# Curso de Pascal, de Nacho Cabanes - Ampliación 2c - Gráficos sin BGI (3).
# Curso de Pascal, de Nacho Cabanes - Ampliación 2d - Gráficos sin BGI (4).
# Curso de Pascal, de Nacho Cabanes - Ampliación 2e - Gráficos sin BGI (5).
# Curso de Pascal, de Nacho Cabanes - Ampliación 3 - Ordenar datos.
# Curso de Pascal, de Nacho Cabanes - Ampliación 4 - Overlays.
# Curso de Pascal, de Nacho Cabanes - Ampliación 5 - Ensamblador desde Turbo Pascal.

Curso: http://www.freepascal.es/cursos.php


saludos...
En línea

Max 400; caracteres restantes: 366
yako-_-

Desconectado Desconectado

Mensajes: 157


Heroes Del Silencio


Ver Perfil
Re: Duda de novato en Free pascal
« Respuesta #3 en: 6 Octubre 2010, 00:33 am »

buenas!!

Gracias por las ayuda a ambos me estoy viendo los tutes de nacho cabanes

Lo de usar la api de windows para cada frase que Writeln('loquesea ñ ó');

tengo que crear una variable???

un saludo
En línea

Para que vivir, pudiendo trabajar los Domingos

                                                                Yako-_-
Khronos14


Desconectado Desconectado

Mensajes: 443


A lie is a lie


Ver Perfil WWW
Re: Duda de novato en Free pascal
« Respuesta #4 en: 6 Octubre 2010, 00:38 am »

Puedes hacer algo como esto:

Código
  1. program Project1;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses
  6.  Windows, SysUtils;
  7.  
  8. procedure WriteLnOem(Line: AnsiString);
  9. begin
  10.  CharToOemBuffA(PAnsiChar(Line), PAnsiChar(Line), Length(Line));
  11.  WriteLn(Line);
  12. end;
  13.  
  14. begin
  15.  WriteLnOem('Prueba con acentos y ñ: á é í...');
  16.  WriteLnOem('...');
  17.  ReadLn;
  18. end.
  19.  

Saludos.
En línea

yako-_-

Desconectado Desconectado

Mensajes: 157


Heroes Del Silencio


Ver Perfil
Re: Duda de novato en Free pascal
« Respuesta #5 en: 7 Octubre 2010, 00:54 am »

Buenas!!

Gracias por la ayuda pero e provado con el codigo ( copy paste) y me sale asi





A ver si hay otra forma de hacerlo o si estoy haciendo algo mal.

Si no es mucho pedir , si me puedes comentar el código te lo agradecería para saber que estoy haciendo.

Un saludo y gracias de antemano
« Última modificación: 7 Octubre 2010, 00:56 am por yako-_- » En línea

Para que vivir, pudiendo trabajar los Domingos

                                                                Yako-_-
Khronos14


Desconectado Desconectado

Mensajes: 443


A lie is a lie


Ver Perfil WWW
Re: Duda de novato en Free pascal
« Respuesta #6 en: 7 Octubre 2010, 01:13 am »

Fallo mío, hice el código al vuelo y no lo comprobé.

Código
  1. program Project1;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses
  6.  Windows, SysUtils;
  7.  
  8. procedure WriteLnOem(Line: PAnsiChar);
  9. var
  10. szBuff: PAnsiChar;
  11. begin
  12.  try
  13.    GetMem(szBuff, StrLen(Line)); //Reservamos memoria
  14.    CharToOemBuffA(Line, szBuff, StrLen(Line)); // Convierte la cadena Line en formato Oem, szBuff es el destino
  15.    WriteLn(szBuff); //Escribe la linea en la consola
  16.  finally
  17.    FreeMem(szBuff); //Liberamos la memoria
  18.  end;
  19. end;
  20.  
  21. begin
  22.  WriteLnOem('Ejemplo de cadena: ñ, á, í, ó, é');
  23.  WriteLnOem('...');
  24.  ReadLn;
  25. end.
  26.  

Saludos.
En línea

yako-_-

Desconectado Desconectado

Mensajes: 157


Heroes Del Silencio


Ver Perfil
Re: Duda de novato en Free pascal
« Respuesta #7 en: 10 Octubre 2010, 23:56 pm »

Buenas!!

Ya me da un poco de apuro escribir otra vez parece que estoy molestando.

el tema que que hice un "copy paste" y nada me sale una imagen parecia a la mostrada anteriormente pero con diferentes caracteres :-\.

No se si lo dije antes, quizas el tema es que tu me das el codigo de delphi y yo lo estoy compilando en Lazarus. ¿Puede ser ese el problema?

Un saludo y gracias de antemano
En línea

Para que vivir, pudiendo trabajar los Domingos

                                                                Yako-_-
d(-_-)b


Desconectado Desconectado

Mensajes: 1.331



Ver Perfil WWW
Re: Duda de novato en Free pascal
« Respuesta #8 en: 11 Octubre 2010, 01:05 am »

No es lo mismo copiar un ejemplo que funciona, a algo muy distiso a como lo aplicas.

de todos modos puedes colocar la parte del codigo que te da el problema para echar un ojo, y ver como lo usas o aplicas.

saludos...
En línea

Max 400; caracteres restantes: 366
Khronos14


Desconectado Desconectado

Mensajes: 443


A lie is a lie


Ver Perfil WWW
Re: Duda de novato en Free pascal
« Respuesta #9 en: 11 Octubre 2010, 01:16 am »

La verdad me extraña que sea un problema de Lazarus, a lo mejor puede ser debido a tu Sistema Operativo, y que no tenga instaladas todas las fuentes del sistema.

No tengo Lazarus instalado para probarlo, pero traduje el código a C y funciona perfectamente.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <malloc.h>
  4. #include <string.h>
  5. #include <windows.h>
  6.  
  7. void WriteLnOem(char* Line)
  8. {
  9. char* szBuff;
  10.  
  11.    szBuff = (char*) malloc(strlen(Line) + 1);
  12.    if (szBuff != NULL){
  13.        CharToOemBuffA(Line, szBuff, strlen(Line));
  14.        szBuff[strlen(Line)] = 0;
  15.        puts(szBuff);
  16.        free(szBuff);
  17.    }    
  18. }
  19.  
  20.  
  21. int main()
  22. {
  23.    WriteLnOem("Ejemplo de cadena: ñ, á, í, ó, é");
  24.    WriteLnOem("...");
  25.    system("pause>null");
  26. return 1;
  27. }
  28.  


Saludos.
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda con OllyScript Alloc Free
Ingeniería Inversa
.:UND3R:. 4 1,493 Último mensaje 4 Noviembre 2011, 17:54 pm
por .:UND3R:.
Programar un Navegador web en Free Pascal (Linux)
GNU/Linux
¡Micronet! 2 2,524 Último mensaje 2 Enero 2012, 00:36 am
por ¡Micronet!
duda free trials
Dudas Generales
Siempre Azul 2 416 Último mensaje 14 Septiembre 2021, 12:05 pm
por #!drvy
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines