Foros del Web » Programación para mayores de 30 ;) » Programación General »

¿¿Porqué me da este error??

Estas en el tema de ¿¿Porqué me da este error?? en el foro de Programación General en Foros del Web. Tengo que hacer un reloj digital, pero cuando lo compilo me da el siguiente error "call to undefined funtion 'delay'", que es lo que me ...
  #1 (permalink)  
Antiguo 30/12/2005, 14:10
 
Fecha de Ingreso: junio-2005
Mensajes: 53
Antigüedad: 19 años, 5 meses
Puntos: 0
¿¿Porqué me da este error??


Tengo que hacer un reloj digital, pero cuando lo compilo me da el siguiente error "call to undefined funtion 'delay'", que es lo que me falta por poner??


#include <conio.h>
#include <stdio.h>
#include <dos.h>

main()
{
int horas,minutos,segundos;


do
{
for (horas=1;horas<=23;horas++)
{
gotoxy(36,15);
printf("%02d:",horas);

for(minutos=0;minutos<=59;minutos++)
{
gotoxy(39,15);
printf("%02d:",minutos);
for(segundos=0;segundos<=59;segundos++)
{
gotoxy(42,15);
printf("%02d:",segundos);
delay(1000);
}


}
}
horas=0;
// obligo a un bucle infinito
}
while(horas<25);
getch();
}
  #2 (permalink)  
Antiguo 30/12/2005, 19:40
dreglad
Invitado
 
Mensajes: n/a
Puntos:
Eso pasa porque el compilador en nignun lugar encuentra el prototipo o la definición de la función "delay"

Esta función está definida en alguna librería, dependiendo de tu compilador... No estoy seguro en cuál, me parece que generalmente está en conio.h, pero depende de cuál sea tu compilador.

¿Qué compilador estás usando?
  #3 (permalink)  
Antiguo 31/12/2005, 02:50
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años, 6 meses
Puntos: 74
Probablemente estes tratando de compilar eso con un compilador standard de C/C++ y como usas librerias y funciones que no lo son no logra compilar.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #4 (permalink)  
Antiguo 31/12/2005, 05:16
 
Fecha de Ingreso: junio-2005
Mensajes: 53
Antigüedad: 19 años, 5 meses
Puntos: 0
Estoy utilizando el Borland c++ y creo que la libreria que utiliza es dos.h no?
  #5 (permalink)  
Antiguo 31/12/2005, 05:23
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años, 6 meses
Puntos: 74
¿Que version estas usando? ¿Es un ejecutable de 32 bits o de 16 bits? Ese codigo esta hecho para MS-DOS.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #6 (permalink)  
Antiguo 31/12/2005, 05:44
 
Fecha de Ingreso: junio-2005
Mensajes: 53
Antigüedad: 19 años, 5 meses
Puntos: 0
Pues la verdad que no se que deciros, me imagino que es de 32,es el programa que utilizamos en clase para programar y siempre lo hes hecho con el Borland c++ 5.0.2 y no h e tenido casi ningun problema exceptuando este.
Que me recomiendas hacer?
Ah prcierto, gracias por tu ayuda
  #7 (permalink)  
Antiguo 31/12/2005, 05:48
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años, 6 meses
Puntos: 74
¿El Borland Builder 5, verdad? Si es asi te recomiendo olvidarte de ese codigo de 16 bits o usar un compilador que acepte esas funciones no standard pensadas para interfaces de consola.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #8 (permalink)  
Antiguo 31/12/2005, 09:41
dreglad
Invitado
 
Mensajes: n/a
Puntos:
No recuerdo bien... pero me parece que Borland tiene definida esa función en la librería "graphics.h".

Inténta incluirla
  #9 (permalink)  
Antiguo 31/12/2005, 11:08
 
Fecha de Ingreso: junio-2005
Mensajes: 53
Antigüedad: 19 años, 5 meses
Puntos: 0
Nada, he incluido la libreria que me dices "graphics.h" y me da el siguiente error:Error directive:BGI graphics not supported under windows
  #10 (permalink)  
Antiguo 31/12/2005, 11:37
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años, 6 meses
Puntos: 74
Cita:
Iniciado por Amagoia686
Nada, he incluido la libreria que me dices "graphics.h" y me da el siguiente error:Error directive:BGI graphics not supported under windows
Igual no tiene mucho sentido que una funcion para pausar el programa este en graphics.h; por otro lado ese mensaje nos dice claramente que tenes un compilador de 32 bits. Podes sustituir el delay por la funcion Sleep de la API de Windows.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #11 (permalink)  
Antiguo 31/12/2005, 11:46
 
Fecha de Ingreso: junio-2005
Mensajes: 53
Antigüedad: 19 años, 5 meses
Puntos: 0
De acuerdo

Ya me imagine que no tendria nada que ver pero llega un momento que pruebas con todo...en definitiva, he utilizado el sleep y en efecto, funciona perfectamente.

Esta funcion no la conocia aun, pero veo que da el mismo resultado asi que es lo que voy a utilizar.Lo unico que me extraña, es que otras veces he hecho algun pequeño programilla con delay y no me ha dado ningun problema, utilizando las mismas librerias y con el borland.

Pero gracias por la gran ayuda prestada.Saludos
  #12 (permalink)  
Antiguo 01/01/2006, 15:56
Usuario baneado!
 
Fecha de Ingreso: febrero-2005
Mensajes: 116
Antigüedad: 19 años, 9 meses
Puntos: 0
Cita:
Iniciado por Amagoia686
Ya me imagine que no tendria nada que ver pero llega un momento que pruebas con todo...en definitiva, he utilizado el sleep y en efecto, funciona perfectamente.

Esta funcion no la conocia aun, pero veo que da el mismo resultado asi que es lo que voy a utilizar.Lo unico que me extraña, es que otras veces he hecho algun pequeño programilla con delay y no me ha dado ningun problema, utilizando las mismas librerias y con el borland.

Pero gracias por la gran ayuda prestada.Saludos
Si te obligan a las antiguas "funciones de MS-DOS" exclusivamente, puedes usar Dev-Cpp. Tiene un soporte para aquellas antiguas aplicaciones. Usa el compilador Mingw32 (portado del original GNU C Compiler, gcc), es de 32 bits y perfectamente estándar. Al menos es mejor que un Borland.
  #13 (permalink)  
Antiguo 02/01/2006, 13:22
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 19 años, 4 meses
Puntos: 24
mmmmm, puedo darte una sugerencia, el reloj que has programado acarrea un error en el tiempo. Este delay(1000), no te asegura que tu aplicacion se suspenda exactamente por un segundo, aveces ese tiempo es mayor, pero nunca menor, por lo que este error se te va sumando en cada suma de 1 segundo. Para mejorarlo tendrias que imprimir la hora que marque el reloj del bios, el cual no se atraza. No me acuerdo la funcion que se usaba, pero estaba en la biblioteca bios.h, consulta la ayuda de esa biblioteca y encontraras la funcion.
Si esta precision no te importa, entonces haz caso omiso de esta critica, ya que el error que s egenera en tu programa es practicamente nulo, y tendrias que dejarlo andando varios miles de segundos para que se atrace un segundo.

Bye
__________________
http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux
  #14 (permalink)  
Antiguo 02/01/2006, 13:39
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años, 6 meses
Puntos: 74
Si tu programa funciona bajo NT olvidate de la BIOS.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #15 (permalink)  
Antiguo 02/01/2006, 15:48
 
Fecha de Ingreso: junio-2005
Mensajes: 286
Antigüedad: 19 años, 5 meses
Puntos: 2
dificil llegar a ser "hard real time"
  #16 (permalink)  
Antiguo 02/01/2006, 16:43
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 19 años, 4 meses
Puntos: 24
Cita:
Iniciado por Willie
dificil llegar a ser "hard real time"
es verdad, lo que pasa es que siempre trato de hacer las cosas lo mas preciso posible. JAJA, es un defecto que tengo
__________________
http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux
  #17 (permalink)  
Antiguo 02/01/2006, 16:43
Usuario baneado!
 
Fecha de Ingreso: febrero-2005
Mensajes: 116
Antigüedad: 19 años, 9 meses
Puntos: 0
Cita:
Iniciado por Eternal Idol
Si tu programa funciona bajo NT olvidate de la BIOS.
Exacto, debes pedir la hora llamando al sistema usando el método que este provea para ello.
  #18 (permalink)  
Antiguo 02/01/2006, 16:44
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 19 años, 4 meses
Puntos: 24
Cita:
Iniciado por Eternal Idol
Si tu programa funciona bajo NT olvidate de la BIOS.
mmm, tengo una curiosidad:
en que afecta que el sistema operativo sea NT?
__________________
http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux
  #19 (permalink)  
Antiguo 02/01/2006, 16:46
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años, 6 meses
Puntos: 74
Cita:
Iniciado por TolaWare
mmm, tengo una curiosidad:
en que afecta que el sistema operativo sea NT?
Es un Sistema Operativo de 32 bits (modo protegido) donde cualquier acceso de bajo nivel esta prohibido a los ejecutables de modo usuario.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #20 (permalink)  
Antiguo 02/01/2006, 16:46
Usuario baneado!
 
Fecha de Ingreso: febrero-2005
Mensajes: 116
Antigüedad: 19 años, 9 meses
Puntos: 0
Cita:
Iniciado por TolaWare
mmm, tengo una curiosidad:
en que afecta que el sistema operativo sea NT?
Un sistema decente está en modo protegido, y en este modo la BIOS no se usa para nada.

Debes llamar al sistema, y cada sistema provee un mecanismo, como por ejemplo: Llamada a una serie de funciones (API), añadidos a la librería C, interfaz POSIX, interrupciones... Lo que sea
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:00.