Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Tipo de datos (https://www.clubdelphi.com/foros/showthread.php?t=87902)

skara 15-03-2015 23:44:28

Tipo de datos
 
Buenas compañeros, actualmente estoy desarrollando una aplicación, y requiero convertir de un tipo de dato a otro. tengo una BD en la cual almaceno los datos para luego cargarlos a un ProgressBar en el valor máximo y mínimo.
lo que necesito hacer es que al establecer un tipo de dato para el valor mínimo del Progressbar este numero es 0,0005, y estoy usando la función StrToInt() pero no me sirve.
y el otro tipo de dato es para el máximo, el numero que manejo es de 10 dígitos 7333678456, también uso la función StrToInt pero me sale un error que dice que este no es un valor valido para un integer.
agradezco si me pueden colaborar para mirar que función debo usar.
muchísimas gracias

AgustinOrtu 16-03-2015 01:12:32

No se que version de Delphi usas, en la 2010, la TProgressBar en sus propiedades Min y Max almacena un Integer, por lo tanto no podes representar los dos numeros que queres ahi

Informacion sobre el tipo Integer en Delphi

Esta pagina nos dice que los valores maximos y minimos soportados por el tipo Integer son:

Cita:

Min integer value = -2147483648
Max integer value = 2147483647
Y obviamente numeros sin coma, por eso no podes representar ni el 0,0005 ni el 7333678456

Ahora pregunta, porque es necesario que la barra tenga estos valores?

skara 16-03-2015 02:56:11

Es que estos valores los quiero imprimir en un label, no se si el error q me sale es en el progressbar o a la hora de imprimirlo en el Labels, si es así que función podria utilizar para que me dejara visualizar ese dato?

AgustinOrtu 16-03-2015 03:17:27

En un caption de un label tenes que poner un tipo string, entonces tenes que usar la funcion alreves de como lo estas haciendo:

Código Delphi [-]
Label1.Caption := IntToStr(ProgressBar1.Min);
Label2.Caption := IntToStr(ProgressBar1.Max);

ecfisa 16-03-2015 06:08:30

Hola skara.

Si deseas almacenar el valor 7333678456 tendrías que usar el tipo Int64 que sí es capaz de contenerlo.

Pero si además mencionas que tendría que poder soportar el valor 0.0005 podrías usar el tipo Single, Double o Extended. La funcion de conversión a string para estos tipos es FloatToStr.

El detalle, como bién te ha comentado AgustinOrtu es que no podrás usar estos tipos en las propiedades Min, Max, Step y Position del componente TProgressBar (ni en el método StepBy) ya que solo aceptan tipos enteros.

Saludos :)

escafandra 16-03-2015 18:14:14

Yo haría una simple regla de tres para controlar el TProgressBar, eligiendo un valor Max sencillo:
Código Delphi [-]
var
 VMAX, Val: Variant;  //Siendo VMAX el valor Maximo y Val los intermedios
begin
 VMAX:= StrToCurr('7333678456');
 ProgressBar1.Max:= 100;
 ProgressBar1.Min:= 0;
 ProgressBar1.Position:= Val*100/VMAX;

Saludos.


La franja horaria es GMT +2. Ahora son las 12:58:03.

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