Conversión de tipos en Delphi

Resulta que necesito calcular el resultado de una potencia, cuya fórmula es 10 elevado a
(t-20)*0.22, la t es una variable que yo conozco, mi problema es que no sé como calcular esa potencia, ¿hay alguna función aritmética que me lo haga?. Por otro lado, cuando yo introduzco datos en la base de datos a través de mi formulario, yo lo tengo diseñado para que los introduzca a través de un TDBEdit, cuando introduzco los datos con 3 decimales me lo hace bien, pero uando yo vuelvo a abrir la base de datos, me pone una barbaridad de decimales, es decir, si yo introduje 24,12 el me escribel 224,1110456 por ejemplo. ¿Cómo puedo solucionar esto?. Además una vez calculado el valor tengo que poder escribirlo en el tdbedit, pero claro, tengo tipos incompatibles, porque en el tdbedit puedo escribir un string, pero sin embargo, yo estoy calculando un float. ¿Cómo puedo hacer esa conversión de tipos?.
Respuesta
¿Con qué bases de datos trabajas? ¿Qué componentes utilizas?
Perdona por no ser más explícita. Pues trabajo con access 2000 y utilizo como componentes una tabla de la cual saco el dato t( un ttable) y un tdbedit donde muestro los datos.
Y ya que estoy te voy hacer una preguntilla, cual es la diferencia entre usar un TTable o un Adorable, te digo que trabajo con delphi 6, y además también tengo dudas en lo de utilizar un TDataBase, porque yo en mi aplicación no lo uso, lo que tengo es un módulo de datos, y en él meto los TDataSource que necesito y los Ttable, y luego conecto cada tabla con el alias de mi base de datos. ¿Hay algún problema en hacerlo así?, ¿Qué ventajas representa el usar un TDatabase?
Gracias por contestarme.
Tienes 2 problemas:
En SQL, el decimal es el punto, así que antes de hacer la conversión a Currency / float, debes de recoger el valor y convertir la coma por un punto.
La diferencia entre un TTable y un ADO Table es obvia: una paleta está diseñada expresamente para trabajar con ADO y la otra para trabajar con todos, especialmente el BDE. Te aconsejo que no mezcles tipos, es decir, si utilizas ACCESS o Sql Serve, utiliza la paleta ADO, bien por velocidad y/o optimización. Si utilizas Oracle, MySql o Interbase, utiliza DBExpress y si usas otras, de terceros, vía ODBC usa el Bde.
En cuanto al TTable, no te puedo decir, porque yo nunca los uso, uso un SQLConnection y un Query

1 respuesta más de otro experto

Respuesta
1
Con respecto a la conversión de datos, para convertir de Float a String tenés varias formas:
->FloatToStr esta hace la conversión automáticamente, pero con 15 decimales, no te sirve.
->Str esta te permite especificar la cantidad de decimales, esta te sirve. Es un procedure.
->Format esta es la misma de C. probá con: "Format('%n.2',[x])" donde por es el número. Te sirve. Esta es una función.
Para hacer la exponenciación, existen funciones como: exp, power, intpower. Hya otras, pero creo que la que a vos te serviría es power. Para tratar con estos números grandes podes usar: frexp.
El tema de por qué te muestra mal los números, la verdad que ni idea. Yo nunca tuve problemas, deberías ver el tipo de datos de la columna esa en la BDD y fijarte bien cuál componente te conviene y si los setting del mismo están bien.
Suerte!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas