IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

Comment écrire la date et l'heure actuelles dans la base de registres ?


Sujet :

Langage Delphi

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 228
    Par défaut Comment écrire la date et l'heure actuelles dans la base de registres ?
    Bonjour,
    J'ai un petit soucis avec la base de registre: je veux que lorsque j'execute mon petit executable, il va lire dans l'horloge système, puis ecrire l'heurre lu dans la base de registre, clé :"HKCU/Software/Microsoft/Macle",
    mais avec le rajout de une minute de plus, et sous format:Donc, si l'heure système était 2005.08.30 16:41:21, il rajoute 1 minute:
    Je vous remercie beaucoup!

  2. #2
    Membre confirmé Avatar de yoghisan
    Profil pro
    Inscrit en
    Février 2004
    Messages
    172
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 172
    Par défaut
    Tu as un début de réponse dans la faq
    Comment encoder/décoder une date ou un temps ?
    mais travaille plus avec un TDateTime

    Après reflexion (de ta part), je pourrais te donner une réponse !

  3. #3
    Membre Expert
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 717
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 717
    Par défaut
    Sinon, regarde FormatDateTime.

    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)

  4. #4
    Membre averti

    Inscrit en
    Décembre 2004
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 52
    Par défaut
    Tu as aussi l'API GetSystemTime qui te récupère l'heure GMT dans un enregistrement TSystemTime:
    -Heure
    -Minutes
    -Secondes
    -Jour
    -...

    Tu pourra donc travailler ensuite sur cet enregistrement pour modifier ta date

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 228
    Par défaut
    Ouauw!!
    Tout ça a l'air très jolie, mais qq1 pourra-t-il me faire un exemple pratique, svp?

  6. #6
    Membre averti

    Inscrit en
    Décembre 2004
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 52
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var Heure : TSystemTime;
    begin
      //Tu récupere la date et l'heure
      GetSystemTime(Heure);
      //Tu ajoute +1 a ton heure
      Heure.wHour := Heure.wHour+1;
    Bon je t'ai fait le début
    Il faut que tu récupère le décalage horaire (et oui heure gmt)
    Et que tu fasse ton insertion dans la base

  7. #7
    Membre Expert
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 717
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 717
    Par défaut
    Bin, vite fait, ca donne un truc comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    var
       Reg: TRegistry;
    begin
       Reg := TRegistry.Create;
       try
          Reg.RootKey := HKEY_CURRENT_USER;
          if Reg.OpenKey('Software/Microsoft/Macle', False) then
          begin
             Reg.WriteString('MaValeur', FormatDateTime('yyyy.mm.dd hh:nn:ss', Now));
             Reg.CloseKey;
          end;
       finally
          Reg.Free;
       end;
    N'oublie pas d'ajouter Registry dans tes uses.
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 228
    Par défaut
    Oueh!
    Ca a l'air très correct, mais je ne vois aucune ligne écrite dens le registre...Ni lorsque la clé "macle" existe, ni si elle n'existe pas!

  9. #9
    Membre confirmé Avatar de yoghisan
    Profil pro
    Inscrit en
    Février 2004
    Messages
    172
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 172
    Par défaut
    question ?
    C'est volontaire d'avoir voulu changé le format de la date ?
    2005.08.30 16:42:21 au lieu de 2005/08/30 16:42:21

  10. #10
    Membre confirmé Avatar de yoghisan
    Profil pro
    Inscrit en
    Février 2004
    Messages
    172
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 172
    Par défaut
    Bon, je ne respecte pas tout à fait ton cahier des charges sur le le type de la variable enregistrée car l'information reste exploitable facilment en tant qu'heure.
    Le code est facilement modifiable pour etre conforme à tes besoins mais bon...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    uses
      DateUtils, Registry;
     
    procedure Enregistrer(DateTime: TDateTime);
    var Registry: TRegistry;
    begin
      Registry := TRegistry.Create;
      try
        Registry.RootKey := HKEY_CURRENT_USER;
        Registry.OpenKey('Software\Microsoft\Macle', True);
        Registry.WriteDateTime('DateTime', DateTime);
        Registry.CloseKey;
      finally
        Registry.Free;
      end;
    end;
     
    function Ouvrir: TDateTime;
    var Registry: TRegistry;
    begin
      Registry := TRegistry.Create;
      try
        Registry.RootKey := HKEY_CURRENT_USER;
        Registry.OpenKey('Software\Microsoft\Macle', False);
        Result := Registry.ReadDateTime('DateTime');
        Registry.CloseKey;
      finally
        Registry.Free;
      end;
    end;
     
    procedure TForm1.FormCreate(Sender: TObject);
    var DateTime: TDateTime;
    begin
      // recuperation de la date
      DateTime := Now;
      ShowMessage( DateTimeToStr(DateTime) );
     
      // incrementation de la date
      DateTime := IncMinute(DateTime,1);
      ShowMessage( DateTimeToStr(DateTime) );
     
      Enregistrer(DateTime);
     
      TimeSeparator := ':';
      DateSeparator := '.';
      ShowMessage( DateTimeToStr(Ouvrir) );
     
      Application.Terminate;
    end;

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 228
    Par défaut
    J'y suis prèsque...
    La clé est bien crée dans la base de registre et une valeur "datetime", mais c'est une valeur binaire, codée. J'ai besoin d'une "string".

  12. #12
    Membre confirmé Avatar de yoghisan
    Profil pro
    Inscrit en
    Février 2004
    Messages
    172
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 172
    Par défaut
    regarde ce que dit lung

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 228
    Par défaut
    Merciii les gars, c'est résolu!!

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 228
    Par défaut
    Encore une petite question:
    POur ecrire une nouvelle valeur string dans "maclé": par ex. pour l'heure actuelle c'est bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Reg.WriteString('MaValeur', FormatDateTime('yyyy.mm.dd hh:nn:ss', Now));
    mais pour dire :
    "Lundi prochain"
    C'est une enigme pour moi...
    Donc, comment ecrire "Lundi prochain, ou...tous les lundis ?"

    Merci d'avance.

  15. #15
    Membre Expert
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 717
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 717
    Par défaut
    Citation Envoyé par kikica
    mais pour dire :
    "Lundi prochain"
    C'est une enigme pour moi...
    Donc, comment ecrire "Lundi prochain, ou...tous les lundis ?"
    Tu veux écrire la chaine "lundi prochain", ou la date du prochain lundi ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Reg.WriteString('MaValeur', 'Lundi Prochain');
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)

  16. #16
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 228
    Par défaut
    Mais la date, bien sûr!
    Désolé pour cet malentendu...

  17. #17
    Membre Expert
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 717
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 717
    Par défaut
    Pour trouver le prochain lundi, regarde l'aide de DayOfTheWeek et de Tomorrow, par exemple.
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)

  18. #18
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 228
    Par défaut
    Oui, mais j'obtiens les chiffres 1-7. Comment traduire cette chiffre en date, par ex. lundi prochain
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    showmessage ('lundiprochain = '(inttostr(variable)));

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 21
    Par défaut
    En effet, si j'ai bien compris, tu veux calculer la date du prochain lundi, c'est ça ?

Discussions similaires

  1. ajouter la date et l'heure actuel dans une fenêtre qui contient un tableau datafile
    Par med31075 dans le forum Interfaces Graphiques en Java
    Réponses: 13
    Dernier message: 09/03/2014, 13h10
  2. [XL-2003] Comment enlever 2 heures à la date et l'heure actuelle ?
    Par juju05 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/06/2013, 14h25
  3. comment comparer une date et une heure ?
    Par developpeur62 dans le forum Hibernate
    Réponses: 2
    Dernier message: 03/11/2006, 10h04
  4. Comment tronquer une date (supprimer les heures)
    Par soazig dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 27/01/2006, 15h58
  5. [c#] comment récuperer la date et l'heure en cours
    Par juloul dans le forum Windows Forms
    Réponses: 1
    Dernier message: 03/10/2005, 16h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo