![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
"floating point division by zero" En unas maquinas si en unas maquinas no
Amigos foristas me sucede algo raro que no me había pasado antes y no encuentro nada parecido en red (Juro que he buscado).
Resulta que el dichoso error "floating point division by zero" me sale en algunas maquinas pero en otras no. Resulta que tengo una form donde tengo varios procedimientos muy similares a este: de hecho este es uno de ellos: digamos unos 4 procedimiento muy similares que llamo desde algun boton para que se ejecute. Los nombres de las variables y la estructura misma del procedimiento en estos dias me pongo en el plan de cambiarlas para mejor comprension del codigo con alguna metodologia como "notación camello" o algo asi. Bien pero el tema que quiero compartir con ustedes en la busqueda desesperada por cierto, de una solución es lo siguiente. Cojo la base de datos y el ejecutable y lo llevo a una maquina (sucede como con unas 5 hasta ahora) y cuando lo ejecuto sale el error (la ejecucion es por ejemplo el llamado a la funcion). En casa y en la mayoria de las maquinas funciona perfectamente. me he dado a la tarea de evaluar cosas como sistema operativo y configuracion regional y nada. Lo que me tiene mas "Cabezon" es que en unas maquinas si funciona perfecto y en optras no aun siendo la misma base de datos y el mismo ejecutable. Trabajo con dlphi XE y Firebird. Gracias de antemano. Última edición por Casimiro Notevi fecha: 20-01-2016 a las 09:16:47. |
#2
|
||||
|
||||
Asegúrate de iniciar absolutamente todas las variables que intervienen antes de hacer cualquier cosa. El problema que tienes es que alguna no esta inicializada y recordemos que cuando eso pasa es imposible saber que valor le dará el sistema al momento de ejecutarse, normalmente es un valor pseudoaleatorio y en una de esas te toca un cero y eso te produce el error. De todos modos si no pones la totalidad del código lo demás es especular.
__________________
AKA "El animalito" ||Cordobés a mucha honra|| |
#3
|
|||
|
|||
Gracias amigo AzidRain por el tiempo que te tomas para ayudarme.
Con este codigo Llamo algunas funciones financieras que dan error en algunas maquinas. Se activa cuando rayamos un codigo de barras.
Las funciones son las siguientes:
Lo de las variables me suena muy logico. solo quiero si no es molestia que revises los codigos para que me ratifiques o como tu mismo dices, no especular. Gracias amigo y a todos los que tengan a bien opinar y aportar sobre el tema. |
#4
|
||||
|
||||
Recuerda que Delphi tiene un muy buen depurador. ¿En qué línea te marca la excepción?
|
#5
|
|||
|
|||
Hola Al. No se cual linea es la del error; resulta que en la maquina donde tengo la fuente (Osea la mia) no da error por ningun lado, entonces voy a otras maquinas y ahi si bota el error. como alla ejecuto el programa no he tenido la oportunidad de ver ese detalle.
Lo que he intentado es inhabilitar partes de codigo donde creo puede estar el error pero igual me sigue saliendo y no he podido ver en donde esta. En sintesis la depuracion en mimaquina no marca nada pero la ejecucion en algunas maquinas marca el error. en otras maquinas la ejecucion tampoco marca error. Gracias |
#6
|
||||
|
||||
El error puede ser ocasionado por artículos que tienen precio cero. Y seguramente se produce aquí.
Quiero decir que aparentemente el problema es según qué artículo se escoge, y no por la máquina donde se hace la prueba.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#7
|
|||
|
|||
Casimiro voy a revisar con muchos productos y te cuento. Gracias por tu interés.
|
#8
|
||||
|
||||
Yo creo que la excepción es muy clara:
Se produce cuando se divide un número por 0 La solución es revisar en el código donde se divida, sobre todo en donde los valores pueden venir de parte del usuario Tenés dos alternativas, no permitir que se ingrese el 0 que va a terminar como divisor, o bien validar siempre el divisor y en lugar de dividir, cambiar el resultado por otro Saludos |
#9
|
|||
|
|||
gracias AgustinOrtu. tu respuesta es clara y te agradezco. ahora sigue la inquietud inicial. Incluso tal cual esta el codigo y las operaciones; ademas con la misma base y el mismo ejecutable, llamando los mismos productos (muchos de ellos para hacer pruebas). Por que en unas maquinas funciona perfectamente y en otras no?.
Sobre el aporte de casimiro debo anotar que en las maquinas que bota el error el soft no discrimina por producto es decir bota error con cualquiera y en las maquinas que no bota error tampoco discrimina producto, deja entrar cualquiera insisto bases iguales ejecutable igual. Gracias Última edición por Camilo fecha: 20-01-2016 a las 15:23:36. |
#10
|
||||
|
||||
Por lo que te he dicho antes, dependerá del artículo con el que hagas la prueba.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#11
|
||||
|
||||
Yo creo que la computadora tiene muy poco que ver
Mas bien la entrada de datos que es distinta. Uno tiende a poner solamente valores correctos cuando hace las pruebas rapidas pero es "dificil" romperlo |
#12
|
|||
|
|||
Amigos del foro:
Solucionado (bueno eso creo). Por fin dejo de botar error en las otras maquinas (aunque solo probé en dos). Que hice??? seguí sus consejos y las cosas ahora funcionan bien, ademas el misterio de las maquinas embrujadas ya me va a dejar dormir tranquilo. solución: 1) Cambie todos los tipos de datos de Extended a Currency. Ademas revise minuciosamente el código y reemplace los extended que correspondían tanto por Currency (los valores en moneda) como a Integer los valores como cantidades por ejemplo. 2) inicialice todas las variables. No estaba iniciando las variables de hecho las incluia en el "var" pero no las ponia a 0. (Aporte de AzidRain) Como ejemplo de los procedimientos que cambie pongo uno solo a fin de no ocupar mucho espacio y como ejemplo de la socucion que le dimos a este lio.
En cuanto a los de las maquinas embrujadas; creo que la intuición de un amigo llamado jose cuando plantea lo siguiente es valida y oportuna por demás Cita:
|
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
"Not a valid floating point value" | david.rguez | Varios | 2 | 12-12-2007 13:42:57 |
""" is not a valid floating point value con edit | Petolansa | Varios | 6 | 11-12-2007 00:07:13 |
"floating point overflow" en campocalculado | ANXO | Conexión con bases de datos | 0 | 22-01-2006 16:59:58 |
deadlock en unas maquinas pero no en otras ??? | DobleSiete | Conexión con bases de datos | 6 | 01-06-2005 14:12:58 |
Unas preguntas? | Waldo | Conexión con bases de datos | 2 | 01-11-2003 06:45:50 |
![]() |
|