Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-08-2008
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
como crear un cronometro completo

hola amigos del foro me gustaria hacer un cronometro completo osea que me muestre tanto los segundo como los minuto trascurrido como lo hace un cronometro real de esto que usan los entrenadores deportivo
Responder Con Cita
  #2  
Antiguo 03-08-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Hola kurono, ¿y el problema es?

Disculpa si suena un tanto molesto, pero... ¿intentaste avanzar en algo? tienes algo de código hecho?

Piensa en funciones DecodeTime, Now, TTimer, TimeToStr, etc.

Una pista, debes obtener la diferencia entre la fecha actual y la desde el momento en que se inicia el conteo.

Kurono me gustaria que dieras el primer paso en intentarlo por favor. Además hay ejemplos de como hacer un cronómetro.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #3  
Antiguo 03-08-2008
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
hola amigo delphius esto es lo que tengo

Código Delphi [-]
  public
    { Public declarations }
    segundos:integer;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
begin

segundos:=segundos+1;
label1.Caption:=inttostr(segundos);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
segundos:=0;
timer1.Enabled:=true;
end;

end.

pues esto me muestra los segundo pero cuando llega a 60 segundo me gustaria que mostrara que transcurrio un minuto
Responder Con Cita
  #4  
Antiguo 03-08-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
OK, bueno... ahora a esos segundos de más hay que convertirlos en minutos y luego a los minutos en horas...

Esto se puede hacer con simples operaciones de sumas, restas, multiplicación y modulos.

los minutos se obtienen calculando la parte entera de la división entre los segundos y 60, luego se vuelve a calcular los segundos sobrantes. Luego se obtiene las horas... con el mismo proceso: la división de los minutos en 60.

¿Se entiende?

minutos = segundos div 60
segundos = segundos - (minutos x 60)

horas = minutos div 60

Ahora, también nos podemos evitar estos tediosos calculos llevando tres contadores... uno para los segundos, otro para las horas y otro para los minutos. La idea es que cuando el contador de los segundos se ponga en 60, el de los minutos en 1, y el contador de segundos se restablece a cero.
El mismo proceso se lleva a cabo para las horas.


Existe otra alternativa, aun más simple... Como he dicho: emplear Now y calcular la diferencia con una hora inicial de conteo.

Sigue pensando.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #5  
Antiguo 03-08-2008
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
mmmm... amigo delphius dices que con el now se hace mas simple pero no se utilizarlo pues intentare con los 3 contadores
Responder Con Cita
  #6  
Antiguo 03-08-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por kurono Ver Mensaje
mmmm... amigo delphius dices que con el now se hace mas simple pero no se utilizarlo pues intentare con los 3 contadores
¿Y digo yo? Porque no pruebas con F1? Simplemente basta con hacer algo como esto:

Código Delphi [-]
algo := Now;

por ejemplo...
Código Delphi [-]
ShowMessage('la hora actual es : ' TimeToStr(Now));

Now es una función que regresa la fecha y hora actual. TimeToStr() es una función que convierte la hora en string... en formato hh mm ss.

de igual forma piensa... ¿que diferencia hay entre Now que calculé hace 5 horas con uno que calculé ahora? ¿Se entiende la idea?

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #7  
Antiguo 03-08-2008
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
si lo entiendo pero ya me esta saliendo muy bien con los tres contadores cuando termine mostrare el codigo
Responder Con Cita
  #8  
Antiguo 03-08-2008
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
amigo delphius ya termine el cronometro y funciona perfectamente

Código Delphi [-]
  public
    { Public declarations }
    segundos,minuto,hora:integer;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
begin
segundos:=segundos+1;
label1.Caption:=inttostr(segundos);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
minuto:=0;
segundos:=0;
hora:=0;
timer1.Enabled:=true;
timer2.Enabled:=true;
timer3.Enabled:=true;

end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
minuto:=minuto+1;
label2.Caption:=inttostr(minuto);
segundos:=00;
end;

procedure TForm1.Timer3Timer(Sender: TObject);
begin
hora:=hora+1;
label3.Caption:=inttostr(hora);
end;

end.

pero como decias antes hay forma mas facil de hacer y me estaba preguntando si no habra un componente que haga estoy solo para reducir el tiempo de programacion en otra ocacion
Responder Con Cita
  #9  
Antiguo 03-08-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Hola



Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney

Última edición por egostar fecha: 04-08-2008 a las 01:11:35.
Responder Con Cita
  #10  
Antiguo 03-08-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por kurono Ver Mensaje
amigo delphius ya termine el cronometro y funciona perfectamente

Código Delphi [-] public { Public declarations } segundos,minuto,hora:integer; end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Timer1Timer(Sender: TObject); begin segundos:=segundos+1; label1.Caption:=inttostr(segundos); end; procedure TForm1.Button1Click(Sender: TObject); begin minuto:=0; segundos:=0; hora:=0; timer1.Enabled:=true; timer2.Enabled:=true; timer3.Enabled:=true; end; procedure TForm1.Timer2Timer(Sender: TObject); begin minuto:=minuto+1; label2.Caption:=inttostr(minuto); segundos:=00; end; procedure TForm1.Timer3Timer(Sender: TObject); begin hora:=hora+1; label3.Caption:=inttostr(hora); end; end.


pero como decias antes hay forma mas facil de hacer y me estaba preguntando si no habra un componente que haga estoy solo para reducir el tiempo de programacion en otra ocacion
Tranquilamente lo puedes hacer con un solo Timer.
Bueno te doy una solución implementando el Now.

1. En el momento en que se desee dar comienzo al cronómotro guardamos en una variable TDateTime la hora actual:

Código Delphi [-]
HoraInicial := Now;

2. En el evento onTimer ponemos algo como esto:

Código Delphi [-]
cronometro: string;
..

cronometro := TimeToStr(Now - HoraInicial);

luego, ya es cuestión de mostrarlo... Por ejemplo en la barra de título:
Código Delphi [-]
Form1.Caption := cronometro;

Para que funcione adecuadamente no está demás decir que la propiedad Interval del TTimer debe ser de un segundo, o 1000 milésimas.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #11  
Antiguo 03-08-2008
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
ok mucha gracia delphius lo probare haora
Responder Con Cita
  #12  
Antiguo 03-08-2008
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
amigo delphius acabo de probarel ejemplo con el now todo funciona bien pero cuando inicio el cronometro inicia de esta forma 12:00:00 deberia inicial todo en cero osea asi 00:00:00
Responder Con Cita
  #13  
Antiguo 03-08-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
¿estás seguro? Prueba con esto:

Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Timer1: TTimer;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  HoraInicial: TDateTime;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  HoraInicial := Now;
  Timer1.Enabled := true;
  Button2.Enabled := True;
  Button1.Enabled := False;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Form1.Caption := 'El cronometro cuenta : ' + TimeToStr(Now - HoraInicial);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Timer1.Enabled := False;
  Button1.Enabled := True;
  Button2.Enabled := True;
end;

end.

Debería funcionar. A me funciona apropiadamente.
Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #14  
Antiguo 03-08-2008
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
amigo delphius todavia sigue iniciando asi 12:00:00 pero creo que el error tiene que ver con la zona horaria que tengo
Responder Con Cita
  #15  
Antiguo 03-08-2008
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
amigo delphius ya resolvi el problema era justamente eso la zona horaria que tenia
Responder Con Cita
  #16  
Antiguo 03-08-2008
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.123
Poder: 20
FGarcia Va por buen camino
Bueno, ya resolviste tu problema... de todos modos aqui esta mi solucion. Tiene un pequeño problema con la actualizacion de la etiqueta (parpadeo) pero eso se soluciona con algo llamado Double buffered me parece, solo que no se como se implementa.
Archivos Adjuntos
Tipo de Archivo: zip Cronometro.zip (7,2 KB, 78 visitas)
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 hacer un cronometro Nicoasd Varios 6 26-02-2007 17:46:02
Como creo un cronometro en delphi VNNO Varios 5 24-08-2006 11:14:36
Crear un cronometro tannyk Varios 4 21-12-2005 14:59:03
Como leer un registro completo StartKill Conexión con bases de datos 1 26-02-2004 09:32:55
Como realizar un cronómetro juanchi Internet 1 21-09-2003 20:47:08


La franja horaria es GMT +2. Ahora son las 10:22:04.


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