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 01-02-2020
compuin compuin is offline
Miembro
 
Registrado: oct 2010
Posts: 210
Poder: 14
compuin Va por buen camino
Rellenar con 0 a la izquierda

Hola foro

Estoy usando este format para colocar una expresion en HH,MM y SS

Necesito que me exprese 21H 04M 03S, en lugar de 21H 4M 3S

Es decir, a los numeros menores a 10, que les agregue el 0 a la izquierda

Este es mi format

Código Delphi [-]
format('%dh %d'' %d"',[d, trunc(m), trunc(s)]);

Gracias de antemano
Responder Con Cita
  #2  
Antiguo 01-02-2020
lucho6007 lucho6007 is offline
Miembro
 
Registrado: ene 2009
Ubicación: Junín, pcia de BsAs, Argentina
Posts: 74
Poder: 16
lucho6007 Va por buen camino
Format

Hola! Lo podés resolver con Format('%.2d:%.2d', [Hora, Minutos]), suponiendo que Hora y Minutos sean valores Integer.


Saludos,
Lucho6007
Responder Con Cita
  #3  
Antiguo 01-02-2020
compuin compuin is offline
Miembro
 
Registrado: oct 2010
Posts: 210
Poder: 14
compuin Va por buen camino
Cita:
Empezado por lucho6007 Ver Mensaje
Hola! Lo podés resolver con Format('%.2d:%.2d', [Hora, Minutos]), suponiendo que Hora y Minutos sean valores Integer.


Saludos,
Lucho6007
Hola Lucho

Esta es la funcion que la calcula

Código Delphi [-]
function TimeToStr(angle:extended):string;
var
  d : integer;
  m, s : extended;
begin
  d:= Trunc(angle);
  m:= abs(frac(angle)*60);
  s:= Round(abs(frac(m)*60));
  Result:= format('%dh %d'' %d"',[d, trunc(m), trunc(s)]);
end;
Responder Con Cita
  #4  
Antiguo 01-02-2020
lucho6007 lucho6007 is offline
Miembro
 
Registrado: ene 2009
Ubicación: Junín, pcia de BsAs, Argentina
Posts: 74
Poder: 16
lucho6007 Va por buen camino
Cita:
Empezado por compuin Ver Mensaje


Código Delphi [-]
function TimeToStr(angle:extended):string; 
var   d : integer;   m, s : extended; begin   d:= Trunc(angle);   m:= abs(frac(angle)*60);   s:= Round(abs(frac(m)*60));   Result:= format('%2dh %2d'' %2d"',[d, trunc(m), trunc(s)]); end;
Probá con ese código
Responder Con Cita
  #5  
Antiguo 01-02-2020
compuin compuin is offline
Miembro
 
Registrado: oct 2010
Posts: 210
Poder: 14
compuin Va por buen camino
Estimado Lucho,

Esta solucion funciona

Muchas gracias
Responder Con Cita
  #6  
Antiguo 01-02-2020
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por compuin Ver Mensaje
Estimado Lucho,

Esta solucion funciona

Muchas gracias

No. No creo que funcione de esa manera. Para especificar la precisión hay que colocar el carácter "." y el "ancho".


Si estuviésemos usando la API wsprintf basta con poner el ancho con un cero delante o el carácter precisión. Con Format solo funciona con el carácter precisión y el ancho.


Tres ejemplos:
Código Delphi [-]
function TimeToStr(angle: extended): string;
var
  d: integer;
  m, s: extended;
begin
  d:= Trunc(angle);
  m:= abs(frac(angle)*60);
  s:= Round(abs(frac(m)*60));
  Result:= format('%.2dh %.2d'' %.2d"',[d, trunc(m), trunc(s)]);
end;


Código Delphi [-]
function wsprintf(lpOut, lpFmt: PAnsiChar): Integer; cdecl; varargs; external 'User32.dll' name 'wsprintfA';



function TimeToStr2(angle:extended):string;
var
  D: integer;
  M,S: Extended;
  Str: array [0..80] of AnsiChar;
begin
  d:=Trunc(angle);
  m:=abs(frac(angle)*60);
  s:=Round(abs(frac(m)*60));
  wsprintf(Str, '%02dh %02d'' %02d"', d, trunc(m), trunc(s));
  Result:= Str;
end;


Código Delphi [-]
function wsprintf(lpOut, lpFmt: PAnsiChar): Integer; cdecl; varargs; external 'User32.dll' name 'wsprintfA';



function TimeToStr3(angle:extended):string;
var
  D: integer;
  M,S: Extended;
  Str: array [0..80] of AnsiChar;
begin
  d:=Trunc(angle);
  m:=abs(frac(angle)*60);
  s:=Round(abs(frac(m)*60));
  wsprintf(Str, '%.2dh %.2d'' %.2d"', d, trunc(m), trunc(s));
  Result:= Str;
end;


Saludos.
Responder Con Cita
  #7  
Antiguo 01-02-2020
lucho6007 lucho6007 is offline
Miembro
 
Registrado: ene 2009
Ubicación: Junín, pcia de BsAs, Argentina
Posts: 74
Poder: 16
lucho6007 Va por buen camino
escafandra, fue lo que le pasé en el primer comentario, que luego en mi respuesta me "comí" el punto (.).


Gracias por aclarar este tema
Responder Con Cita
  #8  
Antiguo 02-02-2020
compuin compuin is offline
Miembro
 
Registrado: oct 2010
Posts: 210
Poder: 14
compuin Va por buen camino
Cita:
Empezado por lucho6007 Ver Mensaje
escafandra, fue lo que le pasé en el primer comentario, que luego en mi respuesta me "comí" el punto (.).


Gracias por aclarar este tema
Muchas gracias escafandra por la aclaratoria
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
como rellenar con ceros a la izquierda algun dato uper PHP 1 15-03-2011 19:49:10
Ventana steponTOp a la izquierda canelita Varios 5 14-01-2008 09:58:02
Eliminarcero a la izquierda cacu OOP 1 11-11-2007 19:50:42
José Saramago:la izquierda ha dejado de ser izquierda marcoszorrilla La Taberna 3 15-06-2007 19:02:49
El zero a la izquierda [Gunman] PHP 4 12-07-2006 08:56:38


La franja horaria es GMT +2. Ahora son las 03:08:49.


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