Ver Mensaje Individual
  #6  
Antiguo 01-02-2020
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Reputación: 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