Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-10-2007
blueicaro blueicaro is offline
Miembro
 
Registrado: abr 2005
Ubicación: España
Posts: 44
Poder: 0
blueicaro Va por buen camino
Número con decimales

HOla Tengo un programa dónde tengo una variables declarada así:
Código Delphi [-]Type TOrient = Record Q1 : LongInt; Q2 : LongInt; Q3 : LongInt; Qu : LongInt;


Para que almacenar números de hasta 6 decimales.

Los números los saco de un fichero de texto, que contiene los números así:
2124.58

Leo el fichero de texto, y el valor lo pongo en un String

Mi problema es al convertirlo, ya que siempre me da cero.
Uso una línea como esta:
Código Delphi [-]
 MiOrient.Q1 := StrToIntDef(StBloque,0)

¿que estoy haciendo mal?

Gracias
/BLueIcaro
Responder Con Cita
  #2  
Antiguo 31-10-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
¿porque utilizas variables tipo entero para leer valores con decimales?

La función StrToIntDef convierte una cadena a un entero y el segundo parámetro es el valor que se tomará en caso de haber un error.

Supongo que al querer cambiar un valor con decimales a un tipo entero, te genera un error (obvio) y entonces toma el 0 que le pasas como segundo parámetro.
__________________

Responder Con Cita
  #3  
Antiguo 01-11-2007
blueicaro blueicaro is offline
Miembro
 
Registrado: abr 2005
Ubicación: España
Posts: 44
Poder: 0
blueicaro Va por buen camino
Entonces que función debo usar?
/BlueIcaro
Responder Con Cita
  #4  
Antiguo 01-11-2007
Avatar de HenryAraniva
HenryAraniva HenryAraniva is offline
Miembro
 
Registrado: jun 2005
Ubicación: El Salvador
Posts: 44
Poder: 0
HenryAraniva Va por buen camino
si lo que quieres es que te queden enteros los decimales podrias usar la funcion round() o trunc(), la primera te redondea un numero decimal a entero por ej. 4.6 = 5, el segundo corta los decimales ej.: 4.6 = 4
__________________
Cuando la única herramienta es un martillo todos los problemas tienen cara de clavo
Responder Con Cita
  #5  
Antiguo 01-11-2007
Avatar de HenryAraniva
HenryAraniva HenryAraniva is offline
Miembro
 
Registrado: jun 2005
Ubicación: El Salvador
Posts: 44
Poder: 0
HenryAraniva Va por buen camino
se me olvidaba, antes debes convertir la cadena con la función val(cadena,dato,x)
"cadena" es la variable donde almacenas el dato del fichero que lees, "dato" es una variable de tipo real donde se almacenará el resultado de la conversión y "x" es una variable de tipo integer, que es utilizada por la función val. Despues de esto podras utilizar la función MiOrient.Q1 := trunc(dato) o MiOrient.Q1 := round(dato)
__________________
Cuando la única herramienta es un martillo todos los problemas tienen cara de clavo
Responder Con Cita
  #6  
Antiguo 01-11-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
La función a usar es StrToFloat (mira en la ayuda, es posible que también exista StrToFloatDef o TryStrToFloat, no las he usado, pero existen sus homónomas para integer).

El tipo de datos, en lugar de ser LongInt (entero largo sin decimales), debería ser Extended (real con decimales).

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Formato de celda número con separador de decimales desde delphi para excel via OLE vick Conexión con bases de datos 2 31-01-2008 16:35:07
Numero con dos decimales zvf OOP 9 07-04-2006 20:27:06
Numero decimales en un double satabel Impresión 1 23-07-2005 18:09:23
Número de decimales en Access javiermorales Conexión con bases de datos 1 15-09-2004 21:24:39
aproximar numero hasta dos decimales Letty Varios 14 28-01-2004 18:01:07


La franja horaria es GMT +2. Ahora son las 11:38:15.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi