Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   pasar de float a formato string para mostrar en edit (https://www.clubdelphi.com/foros/showthread.php?t=71193)

gonza_619 06-12-2010 15:32:24

pasar de float a formato string para mostrar en edit
 
hola amigos, bueno el problema es que necesito pasar un valor float(3,5) que muestre en formato hora (3:30), ya que 50 seria 30 minutos en reloj, qu tal funcionaria gracias

var
x:real;

edit1.text:=floattoformattime('hh:mm',x);

bien probe asi

t:=query1.fieldbyname('tot').AsFloat;
edit6.Text:=formatdatetime('hh:mm',t);

pero en el edit me muestra 00:00 y 3:00 como dio el resutlado de la suma, gracias

duilioisola 06-12-2010 17:59:59

Las Fechas y Horas en Delphi (internamente) las maneja como un Float.

La parte entera son los días que pasaron desde 12/30/1899 y la parte decimal el la hora 0=00:00:00 y 0,9999999 23:59:59

Si tu guardas en alguna variable Float cantidad de horas, deberás hacer los cálculos pertinentes para que se acomoden al formato de hora de Delphi. Después de eso solo debes utilizar las funciones comunes, TimeToStr en tu caso.

Código Delphi [-]
Edit6.Text := MiHoraATexto(3.5);
...
function MiHoraATexto (Valor : Real) : string;
var
   Hora : Real;
   FormatoDelphi : TDateTime;
begin
   Hora := 1/24; // Si cada día tiene 24 Horas, una hora es 1/24 = 0.0146...
   FormatoDelphi := Valor * Hora; // 3.5 x 0.0146...= 0.14583...
   Result := TimeToStr(FormatoDelphi);
end;

duilioisola 06-12-2010 18:07:10

Y si lo quieres un poco más complejo, podría devolverte la cantidad de días si son más de 24 horas:

Código Delphi [-]
Edit6.Text := MiHoraATexto(32.5); // 1 Dia 8 Horas 30 Minutos
...
function MiHoraATexto (Valor : Real) : string;
var
   Hora : Real;
   FormatoDelphi : TDateTime;
   Dias : integer;
begin
   Hora := 1/24; // Si cada día tiene 24 Horas, una hora es 1/24 = 0.0146...
   FormatoDelphi := Valor * Hora; // 32.5 x 0.0146...= 1.35416...
   if (FormatoDelphi > 1) then
   begin
      Dias := Trunc(FormatoDelphi); // La parte entera de la fecha, 1
      FormatoDelphi := FormatoDelphi - Dias; // 1.35... - 1 = 0.35...
      Result := IntToStr(Dias)+' Dias 'TimeToStr(FormatoDelphi)+' Horas';
   end;
   Result := TimeToStr(FormatoDelphi)+' Horas';
end;

gonza_619 06-12-2010 21:35:09

gracias funciono de 10 pense q no se podia , pero siempre esta la salida para delphi gracias de nuevo


La franja horaria es GMT +2. Ahora son las 08:04:59.

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