Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Convertir min:seg:mil a milisegundos. (https://www.clubdelphi.com/foros/showthread.php?t=27190)

CRIS 14-11-2005 21:21:10

Convertir min:seg:mil a milisegundos.
 
Chicos necesito una cosilla que no se como hacer, he estado buscando por el foro y por el antiguo y lo veo.

Necesito pasar 1:12:450 a milisegundos, las horas no me interesan, solo necesito pasar por ejemplo: 1 minuto, 12 segundos y 450 milesimas, ¿estas tres cantidades se puede pasar a milisegundos? recordad que el formato es 1:12:450 y esta dentro de un MaskEdit.

Salu2 y como siempre gracias.

marcoszorrilla 14-11-2005 22:59:51

Código Delphi [-]
  procedure TForm1.Button1Click(Sender: TObject);
  var
  h,m,s,ms:Word;
  begin
  m :=StrToInt( copy(maskedit1.text,1,2))*60*1000;
  s :=StrToInt( copy(maskedit1.text,4,2))*1000;
  ms:=StrToInt( copy(maskedit1.text,7,3));
  ms:=ms+m+s;
  ShowMessage('Milisegundos:'+IntTostr(ms));
  end;

Para asegurarte que las posiciones sean correctas es mejor que pongas la máscara con 00 así obligas a que introduzcan siempre los 7 dígitos:
00:00:000

Un Saludo.

CRIS 15-11-2005 10:45:42

Un millon de gracias men, me salvas la vida, lo pruebo y te cuento.

Salu2.CRIS.

CRIS 15-11-2005 12:00:25

Lo estoy probando y no me cuadran los tiempos, e cambiado las posiciones ya que el formato va ser automatico, el tiempo siempre va ser 1:12:450 con lo cual he echo esto:

Código Delphi [-]
var
   h,m,s,ms:Word;
   begin
   m :=StrToInt( copy(maskedit1.text,1,1))*60*1000;
   s :=StrToInt( copy(maskedit1.text,3,2))*100;
   ms:=StrToInt( copy(maskedit1.text,6,3));
   ms:=ms+m+s;
   ShowMessage('Milisegundos:'+IntTostr(ms));

pero pasa una cosa, el resultado no es el esperado ya que da 61650 cuando en realidad es 72450 veo que lo que hace es multiplicar por 100 los segundos que hay y deberia ser multiplicar por 1000 para que de bien, bueno pues si pongo para que multiplique por 1000 el resultado es 6914, no entiendo lo que ocurre.

Salu2.CRIS.

CRIS 15-11-2005 12:17:55

Solucionado men, lo hecho asi y rula a la perfeccion:

Código Delphi [-]
var
 ms,m,s:word;
 total:integer;
 begin
m :=StrToInt( copy(maskedit1.text,1,1))*60*1000;
s :=StrToInt( copy(maskedit1.text,3,2))*1000;
ms:=StrToInt( copy(maskedit1.text,6,3));
total:=ms+m+s;
ShowMessage('Milisegundos:'+IntTostr(total));

Gracias de nuevo y Salu2.CRIS.

marcoszorrilla 15-11-2005 14:45:26

En efecto ahora que repaso el ejemplo que hice al vuelo, veo que se me olvidó multiplicar por 1000 y lo hice por 100, cuando ya lo había hecho en los minutos 60*1000, pero veo que habías captado la idea y tu misma lo has corregido.

Un Saludo.

CRIS 15-11-2005 15:19:25

Si, me diste la idea y te lo agradezco de corazon por que ya solo me faltaba eso para acabar la aplicacion.

Salu2.CRIS.


La franja horaria es GMT +2. Ahora son las 16:41:52.

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