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

 C Discussion :

Date de création incorrecte


Sujet :

C

  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2022
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2022
    Messages : 34
    Par défaut Date de création incorrecte
    Bonjour,

    Voici le code :
    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
     
      do
      {
        ++item;
        sprintf(pathDirFile,"%s/%s%03d.bmp",pathDir,file1,item); f1 = fopen(pathDirFile,"r");
        sprintf(pathDirFile,"%s/%s%03d.txt",pathDir,file2,item); f2 = fopen(pathDirFile,"r");
        if (f1) fclose(f1);
        if (f2) fclose(f2);
      } while (f1 != NULL || f2 != NULL);
        sprintf(pathDirFile,"%s/%s%03d.bmp",pathDir,file1,item); f1 = fopen(pathDirFile,"wb");
        sprintf(pathDirFile,"%s/%s%03d.txt",pathDir,file2,item); f2 = fopen(pathDirFile,"w");
      fprintf(f2,...);
      fwrite(buffer,1,sizeBuffer,f1);
      fclose(f2);
      fclose(f1);
    Ce code me crée deux fichiers :
    - ImageXXX.bmp
    - ScalesXXX.txt
    avec XXX le numéro suivant des fichiers qui existent dans le répertoire.

    Tout marche très bien, sauf lorsque je supprime les fichiers (il se trouve que je les supprime tous sauf Image001.bmp et Scales001.txt) et que je relance ; il me crée deux fichiers (Image002.bmp et Scales002.txt), mais la date de création de Image002.bmp est erronée car plus ancienne que l'heure de création (ex : 10:15) tandis que la date de création de Scales002.txt est correcte (ex : 11:38). Si je supprime ces deux fichiers et que je relance, j'obtiens le même résultat (ex : 10:15 pour Image002.bmp et 11:39 pour Image002.txt). Les autres fichiers (Image003.bmp et Scales003.txt) créés à la suite ont toujours une heure correcte. Mais si je supprime tous ces fichiers (Image002.bmp, Scales002.txt, Images003.bmp et Scales003.txt) et que je relance, j'ai encore la même chose (ex : 10:15 pour Image002.bmp et 11:40 pour Image002.txt). Il faut qu'entre le moment où je supprime les fichiers et le moment où je lance l'application, il y ait une minute.

    Je ne sais pas comment cela se fait-il et où cette ancienne heure est mémorisée.

    Quelqu'un sait-il où cette ancienne heure est mémorisée svp ?
    Quelqu'un sait-il comment avoir l'heure correcte de création (la même pour les deux fichiers, c.-à-d. l'heure récente) svp ?

  2. #2
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2022
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2022
    Messages : 34
    Par défaut
    Merci à tous ceux qui ont lu et/ou essayé de me répondre.

    Comme le code ne mentionnait nullement une quelconque heure, j'en ai conclu que la "faute" revenait à Windows. J'ai posté un message sur un forum Windows et j'ai obtenu https://devblogs.microsoft.com/oldne...15-14/?p=34923.

    J'ai fini par faire ceci et cela marche.

    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
     
    #include <windows.h>
     
    // SetFileToCurrentTime - sets creation time to current system time
    // Return value - TRUE if successful, FALSE otherwise
    // hFile  - must be a valid file handle
    void SetFileToCurrentTime(const char* pathDirFile)
    {
      HANDLE        hFile;
      FILETIME      ft;
      SYSTEMTIME    st;
      size_t        origsize = strlen(pathDirFile) + 1;
      const size_t  newsize  = mbstowcs(NULL,pathDirFile,origsize) + 1;
      wchar_t       wPathDirFile[newsize];
     
      mbstowcs(wPathDirFile,pathDirFile,origsize);
      hFile = CreateFile(wPathDirFile,FILE_WRITE_ATTRIBUTES,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
      if (GetLastError() == ERROR_FILE_NOT_FOUND) {printf("Cannot create creation time of the file because ERROR_FILE_NOT_FOUND.\n");        return;}
      GetSystemTime(&st);
      if (!SystemTimeToFileTime(&st,&ft))         {printf("Cannot create creation time of the file because SystemTimeToFileTime failed.\n"); return;}                                                                                                                      // Converts the current system time to file time format.
      if (!SetFileTime(hFile,&ft,&ft,&ft))        {printf("Cannot create creation time of the file because SetFileTime failed.\n");          return;}
      if (!CloseHandle(hFile))                    {printf("Cannot create creation time of the file because CloseHandle failed.\n");          return;}
    }
     
    int main(int argc, char *argv[])
    {
      SetFileToCurrentTime("E:/Images Qt/tata.txt");
    }

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/04/2017, 15h19
  2. [BI4] Format Date erreur type incorrect
    Par milia dans le forum Designer
    Réponses: 1
    Dernier message: 01/09/2015, 15h09
  3. Date de fichier incorrecte après écriture
    Par Manic dans le forum Langage
    Réponses: 1
    Dernier message: 23/06/2008, 10h12
  4. Champ date "Valeur d'entrée incorrecte"
    Par meghaoui dans le forum Bases de données
    Réponses: 5
    Dernier message: 14/02/2007, 15h50
  5. Réponses: 5
    Dernier message: 02/07/2006, 19h37

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