FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Problemas con "COPY"
Hola Amigos del Foro,
Estoy desarrollando un programa que captura los datos de latitud y longitud (float) desde un GPS, datos que posteriormente los compara con una referencia que entrega el usuario. Si lo anterior es válido, en una carta digital que está georeferenciada, se genera un punto rojo que marca la posición del usuario dentro de dicha carta. Hasta ahí todo va bien, el problema lo tengo al tratar de editar el valor que me entrega el GPS para que sea un entero. Es decir, si la latitud en segundos es 35,43, necesito solo el 35 y si la longitud es 0,42, solo necesito el 0. Estos valores pueden variar en su longitud, ya que si bien el GPS solo entrega valores con 2 decimales significativos, los enteros pueden ser 1 o 2 como máximo (ejemplo: 59, 23 segundos ó en algunos casos 02,37). Luego de buscar en el foro, encontré funciones como trunc, RoundTo y otras, pero opté por usar “Copy”, de la forma en que se aprecia en el código de abajo, ya que las funciones me causaban problemas y mis conocimientos de Delphi son muy básicos. El programa compila bien y se genera el ejecutable, pero llegado el momento de realizar el redondeo de las cifras me arroja el siguiente error: “Raised Exception Class EConvert Error with message ‘ ‘’is not a valid Integer Value’. Process stopped. Use Step or Run to continue.” Según lo que entiendo, las comilla que encierran al separador (‘,’) me están causando el problema, pero lo cierto es que no sé como solucionarlo. Les adjunto el código para que quede más claro y a ver si alguien más avezado me puede ayudar con este problema que ya me saca canas verdes. De antemano muchas gracias a quienes lean este mensaje.
|
#2
|
|||
|
|||
a veces marca el delphi los errores una linea despues de lo que causo el problema, porque no pruebas en lugar de strtoint la funcion strtointdef donde si no es valido el lo que le mandes a convertir, te da un numero por default, tal vez en los edits no lo estes dando valores y al no darselos no te convierte a cero, te marca el error que mencionas, insisto, que como prueba uses la funcion strtointdef, solo para descartar algun caracter invalido en la conversion
|
#3
|
||||
|
||||
Lo que ocurre es que no está cogiendo ningún número, es decir, la cadena vacía no es un entero válido.
strMinG := copy (strGPSMinG,0,2) Para usar la orden copy debes empezar copiando en el índice 1, tú estas empezando en cero. Para convertirlo, usa mejor tryStrtoInt, o bien StrToIntDef, así no tendrás fallos de conversión. Personalmente usaría los Floats y despues usaría Trunc para coger la parte entera. Ten en cuenta que delphi usa el punto como separador decimal así que una coma te dará errores. - Puedes reemplazar la coma por punto usando StringReplace (delphi 6 o superior creo recordar) - Puedes cambiar la variable SysUtils.DecimalSeparator para que funcione con la coma. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#4
|
|||
|
|||
Chicos,
Gracias por la ayuda, voy a probar usando los consejos que me dan. Saludos, Chalo. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
¿cuál es mejor: "close" o "application.terminate"? | unreal4u | Varios | 5 | 05-03-2007 11:01:19 |
porque no me reconoce los caracteres "*" ni "%" cuando filtro | mrmago | Conexión con bases de datos | 10 | 27-01-2006 04:21:16 |
Problema con funcion "COPY" (string) | emeceuy | Varios | 6 | 28-05-2004 23:39:31 |
Tipo de Variable."String" ó "Double" | UTECYBER | OOP | 7 | 15-12-2003 20:25:39 |
|