![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Cita:
Supongo que el problema está en la función StrToFloat. Le pasas un string y te devuelve un Float. Si el string es vacío o tiene letras o más de un punto, te dará un error de conversión Cita:
Por ejemplo:
|
|
#2
|
|||
|
|||
|
Cita:
|
|
#3
|
||||
|
||||
|
¿Has modificado tu procedimiento como te he comentado (try..except)?
¿Sigue fallando? ¿Con qué error? ¿En qué línea? |
|
#4
|
|||
|
|||
|
Cita:
Yo creo que el fallo esta en toda las lineas. |
|
#5
|
||||
|
||||
|
Cita:
Si el error es exactamente "No puedo convertir " Quiere decir que la celda en ese renglón y esa columna está vacío. Si el error es algo así como "No puedo convertir 123.456.678"; Quiere decir que la celda en ese renglón y esa columna tiene el valor "123.456.678" que no es un valor válido. (Tiene 2 puntos) Por lo que comentas, creo que es el primer error y por lo tanto se puede tomar como un 0 y es lo que hace el trozo de código si hay una excepción. Cita:
En el segundo bucle trata de convertir nuevamente los valores y vuelve a fallar. Si nos dices EXACTAMENTE qué valores tiene las celdas (con sus puntos, comas y signos) te podrémos decir qué es lo que fallará. Ten en cuenta que para convertir un número con la función StrToFloat el string que le pasas: - solo debe tener números - solo puede haber un punto que separe la parte entera de la decimal. - si fuera negativo podría empezar con el signo "-" - no debe contener espacios. |
|
#6
|
|||
|
|||
|
Cita:
|
|
#7
|
||||
|
||||
|
Si quieres más información sobre el error puedes agregarla al mensaje de la exceción
|
|
#8
|
||||
|
||||
|
Hola JLMN22.
Estuve mirando tu código y dos motivos causan tus errores. (Error de conversión) Si lees la propiedad Cells de TStringGrid, verás que no es: [Fila, Columna], sino:[Columna, Fila]. Cuando haces: y la variable 'renglones' alcanza el valor 3, es lógico que allí haya un espacio vacío por que esa es la posición de los meses y estos sólo tendrían que alcanzar el valor 2. Ojalá hubiesen sido 4 meses... ![]() Entonces lo correcto sería:
Ahora tenés otro error, que lógicamente aún no has podido descubrir... ![]() Si miramos la declaración de los arreglos y los valores en que inician y finalizan los for, no nos dan las cuentas... Empiezan en una posición inexistente(0) y terminan una posición antes(3) como por ejemplo: totsuc. Cuando recorremos los arreglos tenemos que sumar 1 tanto a filas como a columnas. Bueno, resumiendo:
Para evitar posibles errores de conversión en el ingreso de los valores, use la función TryStrToFloat, informando sucursal y mes en que se produjo en tal caso. Otra cosa, el begin / end es innecesario cuando hay una sola instrucción, lo único que logra es oscurecer el código. No comprobé si el resultado concuerda con la lógica del algorítmo, eso lo dejo a tu buen criterio... ![]() Un saludo.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 13-02-2011 a las 12:26:48. |
|
#9
|
|||
|
|||
|
Cita:
|
![]() |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| como comparar cada linea de un componente Memo1 con un componente ListBox1 | soma25 | C++ Builder | 1 | 31-10-2007 10:02:22 |
| Componente VCL a OCX | Pook | OOP | 4 | 27-04-2006 10:27:24 |
| Componente | chalys | Varios | 1 | 20-10-2005 08:11:47 |
| Componente mes | carlomagno | OOP | 1 | 23-08-2004 23:15:29 |
| Apuntar una propiedad de un componente a otra de otro componente | Majo | Varios | 10 | 24-03-2004 19:46:39 |
|