[ Foro de Pascal ]

No me funciona este programa. ¿Por qué?

11-May-2014 21:12
Invitado (Martin)
4 Respuestas

Hola. Necesito ayuda. Verán: El siguiente código fuente no me lo compila en Freepascal ni Turbo Pascal. Siempre me dice que falta un punto (.) al final de la línea "SETGRAPHMODE(GETGRAPHMODE). Gracias por la ayuda que me puedan prestar.

Un saludo: Martín


program GetGraphMode;

 uses crt,wincrt,Graph;

var
 Gd, Gm: Integer;
 Mode: Integer;
begin
 Gd := Detect;
 InitGraph(Gd, Gm, ' ');
 if GraphResult <> grOk then
   Halt(1);
{ OutText('<ENTER> para desconectar modo gr fico:');
 readkey;}
 RestoreCrtMode;
 Writeln('Ahora en modo texto');
 Write('<ENTER> para entrar en el modo gr fico:');
 Readln;
 SetGraphMode(GetGraphMode);
 OutTextXY(0, 0, 'De nuevo en el modo gr fico');
 OutTextXY(0, TextHeight('H'), '<ENTER> para parar:');
 Readln;
 CloseGraph;
end.



12-May-2014 20:02
Nacho Cabanes (+84)

No entiendo qué pretendes con la línea:


SetGraphMode(GetGraphMode);


porque "GetGraphMode" es el nombre de tu programa.

¿No sería el modo gráfico, que has llamado "gm" (aunque no le has llegado a asignar un valor)?

Puedes dar un valor a "gm" con Detectgraph (en mi opinión, es más elegante que empezar con InitGraph si necesitas estar intercambiando entre modo gráfico y modo de texto), o simplemente cambiar el nombre de tu programa.


13-May-2014 00:34
Luis Torres (+18)

La función GetGraphMode sí existe, la busqué en la ayuda de Pascal y está allí, devuelve un valor entero. Pero yo creo que error está en haber llamado al programa de la misma forma como se llama la función. Debes cambiar el nombre del programa. En vez de


program GetGraphMode;


podrías colocarle


program GetGraphMode1;


Haz el cambio y, nos cuentas si se solucionó el problema.
Saludos.


13-May-2014 23:07
Antonio Martin

Hola: Nacho y Luis. En principio muy agradecido al haber resuelto mi problema; pues efectivamente se trata de la función "Getgraphmode" que no puede ser igual al nombre del programa. Y contestando al profesor nacho:  yo tampoco entiendo la línea: "Setgraphmode(Getgraphmode), pues se trata de un código fuente que figura en la ayuda de Turbo Pascal y quería comprobar su eficacia, ya que quiero realizar un programa que cambie de modo texto a modo gráfico y viceversa. Así reitero mi agradecimiento.
Un saludo: Antonio.


16-May-2014 00:53
Nacho Cabanes (+84)

Ya he visto, tu programa era un clon del ejemplo de "RestoreCrtMode", pero con el nombre del programa cambiado, que era lo que te estaba volviendo loco:
http://www.nachocabanes.com/pascal/ref/04CA.html
Yo no he usado mucho GetGraphMode, porque la gran mayoría de mis programas eran totalmente en modo texto o totalmente en modo gráfico y en los pocos en los que necesitaba cambiar de modo texto a gráfico usaba modos gráficos prefijados, ya fuera porque se tratara de un programa para mí (y entonces sabía el modo gráfico que buscaba) o porque emplease DetectGraph para descubrir la tarjeta gráfica del sistema y, si me servía (si tenía suficientes colores y/o resolución) forzar yo el modo gráfico que me interesase (típicamente el VGAHi, si estaba disponible) o salir con un mensaje de error cuando no tenía modos con suficiente resolución o cantidad de colores; el "InitGraph" en modo automático siempre me ha parecido poco útil para aplicaciones reales, en las que necesitas una cierta cantidad de colores:
http://www.nachocabanes.com/pascal/ref/0544.html






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)