Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Décompte de temps [ Algorithme / Maths ] (TheBOdybOarDMaN)

mercredi 11 octobre 2006 à 21:17:42 | Décompte de temps

TheBOdybOarDMaN

Bonsoir a tous

J'ai longtemps cherché comment faire pour declencher une action a une heure donnée par l'utilisateur mais je n'ai encore rien trouvé donc restreint a demander ici :) enfin c fait pour sa=)

il faudrai faire un décompte du temps restant avant l'action demandée

voila si quelqu'un a une petite idée merci beaucoup..



jeudi 12 octobre 2006 à 02:39:19 | Re : Décompte de temps

CptPingu

Il faut soit utiliser un timer, soit utiliser les taches planifiés.
Pour la gestion de l'heure, regarde le type TDateTime.

Tu peux aussi regarder les (trop) nombreuses sources de ce site qui permettent de rebooter l'ordi à une période
choisie. Tu devrais trouver ce que tu cherche.

dimanche 15 octobre 2006 à 17:50:44 | Re : Décompte de temps

NeoFacto

Voilà le code d'une unité qui fait, je crois, ce que tu veux avoir comme résultat.
On entre heure/minute/seconde dans des edits et le programme calcul le temps restant dès qu'on appuie sur un bouton.
Si tu as des questions, n'hésite pas à me les poser...
                   En espérant que ça t'aidera, neofacto

unit TempsRestant_Unit;

interface

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

type
  TMainForm = class(TForm)
    LbPlanifierAction: TLabel;
    EdHeures: TEdit;
    EdMinutes: TEdit;
    EdSecondes: TEdit;
    LbHeures: TLabel;
    LbMinutes: TLabel;
    LbSecondes: TLabel;
    LbIndicationTemps: TLabel;
    BtPlanifier: TButton;
    LbTempsRestant: TLabel;
    TimerCalcul: TTimer;
    procedure BtPlanifierClick(Sender: TObject);
    procedure TimerCalculTimer(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var //déclaration des variables globales
  MainForm : TMainForm;
  HeureAction, MinuteAction, SecondeAction : Word; //contient les heures, les
                                                   //minutes et les secondes
                                                   //de l'action planifiée

implementation

{$R *.DFM}

{
  lancement de la procédure de planification
  on enregistre l'heure de l'action planfiée
}
procedure TMainForm.BtPlanifierClick(Sender: TObject);
begin
  //initialisation des variables globales
  HeureAction := StrToInt(EdHeures.Text);
  MinuteAction := StrToInt(EdMinutes.Text);
  SecondeAction := StrToInt(EdSecondes.Text);

  //lancement du Timer qui calcul le temps restant
  TimerCalcul.Enabled := True;
end;

{
  calcul du temps restant jusqu'à l'action planifiée
}
procedure TMainForm.TimerCalculTimer(Sender: TObject);
var //déclaration des variables
  HeureResultat, MinuteResultat, SecondeResultat : Word; //contient les heures,
                                                         //les minutes et les
                                                         //secondes du temps
                                                         //restant
  TempsSysteme : TDateTime; //contient l'heure système
  HeureSysteme, MinuteSysteme, SecondeSysteme, MSecSysteme : Word;
                                               //sontient les heures, les
                                               //minutes, les secondes et les
                                               //millisecondes du système
begin
  //récupération du temps système
  TempsSysteme := Now;
  DecodeTime(TempsSysteme,HeureSysteme,MinuteSysteme,SecondeSysteme,
    MSecSysteme);

  //comparaison du temps système et de temps de l'action planifiée
  if HeureAction < HeureSysteme
    then
      HeureResultat := 24 + HeureAction - HeureSysteme
    else
      HeureResultat := HeureAction - HeureSysteme;
  if MinuteAction < MinuteSysteme
    then
      MinuteResultat := 60 + MinuteAction - MinuteSysteme
    else
      MinuteResultat := MinuteAction - MinuteSysteme;
  if SecondeAction < SecondeSysteme
    then
      SecondeResultat := 60 + SecondeAction - SecondeSysteme
    else
      SecondeResultat := SecondeAction - SecondeSysteme;

  if SecondeSysteme + SecondeResultat >= 60
    then
      dec(MinuteResultat);
  if MinuteSysteme + MinuteResultat >= 60
    then
      dec(HeureResultat);

  //affichage du résultat
  if (HeureResultat = 0) and (MinuteResultat < 10)
    then
      LbTempsRestant.Font.Color := clRed
    else
      LbTempsRestant.Font.Color := clBlack;
  LbTempsRestant.Caption := IntToStr(HeureResultat) + ':' +
    IntToStr(minuteResultat) + ':' + IntToStr(SecondeResultat);

  //vérification que l'action n'est pas arrivée
  if (HeureResultat = 0) and (MinuteResultat = 0) and (SecondeResultat = 0)
    then
      begin
        TimerCalcul.Enabled := False;
        LbTempsRestant.Caption := 'Compte à rebour terminé';
      end;
end;

end.



Cette discussion est classé dans : temps, action, décompte


Répondre à ce message

Sujets en rapport avec ce message

Actionner et arrêter une application sur un poste à distance. [ par slhuilli ] BOnjour à tous,Je me suis animateur multimedia dans une madiatheque et je travaille sur un réseau (en fait 5 machines sous windows 98 sans serveurn du BBGrid avec delphi [ par do ] par exemple si je cliq sur cellule(1,1) j'aimerai associer un action,si je cliq sur une autre cellule(4,8) j'aimerai q'une action soit associé et fair calculer le temps [ par bouiboui ] Je cherche un moyen de calculer le temps d'exécution d'une procedure en delphi, existe-t-il une fonction permettant de le faire ?(Un Timer est dispo d temps d'un mp3 [ par Youyou0214 ] Comment puis je recupere la longueur en minutes et en secondes d'un mp3 ou d'un wave apres l'avoir ouvert avec un opendialog?Merci!! Execution d'une partie en même temps [ par Bruto ] Je voudrais savoir comment faire pour qu'une partie de mon programme s'exécute pendant que mon prog continue.Le but recherché est pourquoi attendre la afficher une mdichild [ par freeman44 ] Comme je débute en delphi je rencontre pas mal de problèmes et en voici un :Je n'arrive pas à faire apparaitre une form MDIChild.Je m'explique : Je la crér une boucle [ par thone08 ] slt j'aimerai savoir comment crer une boucle poru repeté une action le nombre de fois qui est marquer dans un edit sachant ke mon action en kestion es Interrompre une action [ par lucien ] Bonjour à chacun,Situation du problème:Je lance une recherche incrémentale par l'entrée dans un TEdit.Je ne veux pas qu'elle cesse sur la sortie de ce Impossible de fermer le programme [ par manu00 ] Salut,J'ai un petit soucis.J'ai fais un programme avec un boucle dedans qui doit executer un truc tout les XX secondes.Seulement, a chaque boucle (et TChart, action en passant souris sur une barre? [ par themaste ] Salut a tous!!Voila, je travaille sur un TChart, et j'aimerais savoir si il est possible de gerer une action en passant la souris sur une barre d'un B


Nos sponsors

Sondage...

CalendriCode

Novembre 2008
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,172 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.