• Domingo 17 de Noviembre de 2024, 20:37

Autor Tema:  Division by Zero  (Leído 2380 veces)

spiderccs

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Division by Zero
« en: Lunes 31 de Mayo de 2004, 02:01 »
0
BUENAS.... cuando escribo en turbo pascal "USES crt" y en el programa coloco la funcion de borrar pantalla "clrscr" el programa no me corre y me genera un programa llamado "ERROR 200: DIVISION BY ZERO" y si quito la libreria USES y con el el llamado a clrscr... el programa me compila bien pero no me limpia la pantalla..... como puedo solucionar eso?? que esta pasando?

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: Division by Zero
« Respuesta #1 en: Lunes 31 de Mayo de 2004, 06:54 »
0
Bajate la libreria de funciones que puse en el otro post, tiene una versión de crt crtz corregida, la explicación está en otro post (en realidad no es una división entre 0 sino desbordamiento por la velocidad de las máquinas actuales :)   ).  :P

spiderccs

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Division by Zero
« Respuesta #2 en: Jueves 3 de Junio de 2004, 04:05 »
0
muchas gracias y eso tiene arreglo?? por favor si no es mucha molestia amigo me indica como.... GRACIAS

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: Division by Zero
« Respuesta #3 en: Jueves 3 de Junio de 2004, 05:10 »
0
Este es el post:

"Biblioteca De Funciones"
Para Turbo Pascal v 7

En el archivo .zip está incluida una librería .tpu  "crtZ.tpu" junto con los códigos fuentes en ASM.

Para usar el "crtZ.tpu" basta copiarlo a la carpeta units, o a la carpeta donde están tus ".pas". En el uses en lugar de poner crt colocas crtz.

El crtz básicamente es exactamente igual al crt normal, excepto que no tiene el bug de "división entre cero", que en realidad es causado por el algoritmo que calcula el número de ciclos de espera para el "delay". Como las máquinas actuales son mucho más rápidas, el número de ciclos de espera necesarios es tan elevado que supera el límite máximo de un entero de 2 bytes y da error de desbordamiento (que también es causado por una división entre 0, por eso el mensaje).

spiderccs

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Division by Zero
« Respuesta #4 en: Jueves 3 de Junio de 2004, 05:31 »
0
MUCHAS GRACIAS AL FIN PUEDO CORRER LOS PROGRAMAS SIN QUE ME GENERE EL ERROR... esa libreria la  creaste tu mismo??

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: Division by Zero
« Respuesta #5 en: Jueves 3 de Junio de 2004, 18:59 »
0
Es la misma librería CRT, conseguí el código fuente y sólo reprogramé la función del delay ( usando directamente una función del bios) para que no se necesitara calcular al inicio el número de ciclos de espera.