Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-08-2005
Avatar de User_baja1
User_baja1 User_baja1 is offline
Miembro
 
Registrado: feb 2005
Posts: 99
Poder: 20
User_baja1 Va por buen camino
Angry problemas de conversion...

Hola a todos,
tengo un campo de una tabla de tipo real que representa "horas , minutos" y que quiero representar como una cadena de tipo "55:18"

¿Se puede poner una cadena de formato en displayFormat para que lo haga??? ¿como? Seria que cambiara "," por ":"


He probado hacerlo como un campo calculado y cual ha sido mi sopresa al ver que no funciona bien:

function convertirHoras(horas:Real):String;
var h,m:integer;
begin
h:= trunc(horas);
m:= trunc((horas - h)*100);
result:= inttostr(h)+ ':' + inttostr(m);
end;

ahora si lo puebo, por ejemplo:
convertirHoras(55.18) ----> me devuelve 55:17 ¿Por que 17?

lo he probado de otras formas y creo que el problema esta en la funcion trunc, ¿ sabeis por que pasa?



Al final resignado he optado por esto:
Function convertirHoras(horas:Real):String;
var i,h,m:integer; c:Char; s:String;
begin
result:='';
if length(trim(horas))=0 then exit;
c:= DecimalSeparator;
i:= pos(c,horas);
s:= copy(horas,1,i-1);
try h:= StrToInt(s); except h:=0; end;
s:= copy(horas,i+1,length(horas));
try m:= StrToInt(s); except m:=0; end;

if h<10 then result:='0'+inttoStr(h)+':'
else result:= inttoStr(h)+':';
if m<10 then result:= result+'0'+inttoStr(m)
else result:= result+inttoStr(m);
end;





Gracias, David.
Responder Con Cita
  #2  
Antiguo 29-08-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Mejor simplificamos ¿no?
Código Delphi [-]
function convertirHoras(horas:Extended):String;
var h:Integer;
begin
  h:= trunc(horas);
  result:= inttostr(h)+ ':' + FormatFloat('00',frac(horas)*100);
end;

Cita:
Empezado por Ayuda delphi
Trunc returns an Int64 value that is the value of X rounded toward zero.
Un saludo

Última edición por Lepe fecha: 29-08-2005 a las 21:19:38.
Responder Con Cita
  #3  
Antiguo 30-08-2005
Avatar de User_baja1
User_baja1 User_baja1 is offline
Miembro
 
Registrado: feb 2005
Posts: 99
Poder: 20
User_baja1 Va por buen camino
Funciona bien y es mas eficiente, gracias.


Cita:
Empezado por Lepe
Mejor simplificamos ¿no?
Código Delphi [-]
function convertirHoras(horas:Extended):String;
var h:Integer;
begin
    h:= trunc(horas);
    result:= inttostr(h)+ ':' + FormatFloat('00',frac(horas)*100);
end;



Un saludo
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 11:40:42.


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