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

Delphi Discussion :

Je retarde d'une heure


Sujet :

Delphi

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 536
    Points : 121
    Points
    121
    Par défaut Je retarde d'une heure
    Bonjour à tous

    La lecture de la date d'un fichier me fait afficher l'heure avec une heure de retard.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    Var // Globales
     
      Creation : TDateTime;
      Der_Acces : TDateTime;
      Der_MOdif : TDateTime;
    Appel de la fonction GetFileTimes et affichage de tout cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    procedure TForm1.Btn_1Click(Sender: TObject);
    Var
      Nom_F : string;
     
    begin
      Nom_F := 'DELPHI.ICO';
     
      Form1.Lab_Nom_F.Caption := Nom_F;
      GetFileTimes(Nom_F, Creation, Der_Acces, Der_MOdif);
      Form1.Lab_Date_DerAcces.Caption := FormatDateTime('dd/mm/yyyy hh:nn', Der_Modif);
     
    end;
    Fonction appelée (je crois me souvenir qu'elle vient des FAQ) :


    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
     
    Function GetFileTimes(const FileName: string; var Created: TDateTime; var Accessed: TDateTime; var Modified: TDateTime): Boolean;
    var
      Handle_F: THandle;
      Info1, Info2, Info3: TFileTime;
      SysTimeStruct: SYSTEMTIME;
      TimeZoneInfo: TTimeZoneInformation;
      Bias: Double;  
     
    begin  
     
      Result := False;  
      Bias   := 0;  
      Handle_F := FileOpen(FileName, fmOpenRead or fmShareDenyNone);
     
      if Handle_F > 0 then
      begin
        try
          if GetTimeZoneInformation(TimeZoneInfo) <> $FFFFFFFF then Bias := TimeZoneInfo.Bias / 1440; // 60x24
          GetFileTime(Handle_F, @Info1, @Info2, @Info3);
     
          if FileTimeToSystemTime(Info1, SysTimeStruct) then
            Created := SystemTimeToDateTime(SysTimeStruct) - Bias;
     
          if FileTimeToSystemTime(Info2, SysTimeStruct) then
            Accessed := SystemTimeToDateTime(SysTimeStruct) - Bias;
     
          if FileTimeToSystemTime(Info3, SysTimeStruct) then
            Modified := SystemTimeToDateTime(SysTimeStruct) - Bias;
     
          Result := True;
        finally
          FileClose(Handle_F);
        end;
      end;
     
    end;
    Le prog m'affiche 19/09/2015 07:00 . C'est faux : c'est 8 H 00 et non 7. Je dois sans doute reconfigurer des paramètres de dates avec une API ?

    Merci

    P.S.: Là, on est ds un brouillon. Mais, ds le prog, la même fonction avec les mêmes paramètres fonctionne parfaitement. Je m'en aperçois maintenant. C'est dû, sans doute, à une ambiguïté des variables globales.

    La fonction appelée se situe dans une unité 'Routines_Fichiers.pas', liée en USES. Or, les variable globales ci-dessus : Creation, Der_Acces et Der_Modif étaient déclarée, dans le projet brouillon, en tant que variables globales de l'unité principale.

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre régulier

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 536
    Points : 121
    Points
    121
    Par défaut
    Bonjour et merci

    C'était bien une confusion ds les variables locales / globales. Ca marche

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Sql Server] Fusion d'une date et d'une heure
    Par Invité dans le forum Langage SQL
    Réponses: 4
    Dernier message: 20/07/2005, 14h55
  2. Comment convertir une heure (TDateTime) locale en UTC/GMT
    Par rconty dans le forum C++Builder
    Réponses: 2
    Dernier message: 16/05/2005, 10h49
  3. insérer une heure dans une BD
    Par requiemforadream dans le forum ASP
    Réponses: 3
    Dernier message: 26/04/2005, 12h10
  4. [Date][SQL date][Format] insertion d'une heure
    Par goulime dans le forum JDBC
    Réponses: 11
    Dernier message: 26/01/2004, 11h38
  5. [VBA-E] [Excel] Lancer une macro à une heure donnée
    Par Lysis dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/10/2002, 12h15

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