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

API, COM et SDKs Delphi Discussion :

Modifier la date de création d'un fichier


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2003
    Messages : 119
    Points : 115
    Points
    115
    Par défaut Modifier la date de création d'un fichier
    Bonjour à tous,

    Quelqu'un aurait-il une idée de la fonction ou méthode à utiliser pour modifier non pas la date de modification d'un fichier mais la date de création d'un fichier.

    Voici un exemple de code pour la date de modification
    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
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Forigine,
      Fcible: integer;
      aDate: TDateTime;
      Success: Boolean;
      FDate: integer;
     
    begin
      Success:= False;
      Forigine:= FileOpen(Edit1.Text, fmOpenRead);
      if Forigine > 0 then
      begin
        FDate:= FileGetDate(Forigine);
        aDate:= FileDateToDateTime(FDate);
      end;
      FileClose(Forigine);
      Fcible:= FileOpen(Edit2.Text, fmOpenReadWrite or fmShareDenyWrite);
     
    //  FDate:= DateTimeToFileDate(aDate);
     
      if Fcible > 0 then
        Success:= FileSetDate(Fcible, FDate) <> 0;
     
      if Success then
        Label1.Caption:= Edit2.Text;
     
      FileClose(Fcible);
    end;

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 812
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 812
    Points : 13 527
    Points
    13 527
    Par défaut
    Avec SetFileTime:

    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
    procedure ChangeCreateFileTime(const aFileName :TFileName; const aDate :TDateTime);
    var
      hFile      :THandle;
      SystemTime :TSystemTime;
      FileTime   :TFileTime;
     
    begin
      if FileExists(aFileName) then
      begin
        hFile := FileOpen(aFileName, fmOpenWrite or fmShareDenyWrite);
     
        if hFile <> -1 then
        try
          DateTimeToSystemTime(aDate, SystemTime);
          SystemTimeToFileTime(SystemTime, FileTime);
          LocalFileTimeToFileTime(FileTime, FileTime);
     
          if not SetFileTime(hFile, @FileTime, nil, nil) then
            RaiseLastOSError;
     
        finally
          FileClose(hFile);
        end
        else RaiseLastOSError;
      end
      else Raise Exception.Create(Format('Le fichier "%s" n''existe pas !', [aFileName]));
    end;

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2003
    Messages : 119
    Points : 115
    Points
    115
    Par défaut
    Merci Andnotor.
    Entre temp, j'ai aussi trouvé aussi une solution (Juste avant de voir qu'il y avait une réponse)
    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
     
    procedure TForm1.Button4Click(Sender: TObject);
    var
      Forigine,
      Fcible: integer;
      aDate: TDateTime;
      Success: Boolean;
      FDate: integer;
     
      ft : FILETIME;
    begin
      Success:= False;
      Forigine:= FileOpen(Edit1.Text, fmOpenRead);
      // On récupére la date de création du fichier d'origine
      if Forigine > 0 then
        GetFileTime(Forigine, @ft, nil, nil);
     
      FileClose(Forigine);
     
      Fcible:= FileOpen(Edit2.Text, fmOpenReadWrite or fmShareDenyWrite);
     
      // Modifier la date de création du fichier d'après la date de création d'un autre fichier.
      if Fcible > 0 then
        Success:= SetFileTime(Fcible, @ft, nil, nil);
     
      if Success then
        Label1.Caption:= Edit2.Text;
     
      FileClose(Fcible);
    end;
    Pourrais-tu me donner ton avis sur ce code?

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 812
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 812
    Points : 13 527
    Points
    13 527
    Par défaut
    Il faudrait au minimum conditionner l'écriture en fonction de la lecture du fichier source. S'il n'existe pas (ou ne peut pas être ouvert), ft ne contiendra pas grand chose.
    Egalement englober l'écriture dans un bloc try..finally. Si l'écriture échoue, ton fichier sera verrouillé jusqu'au prochain redémarrage du programme (voir du système ).

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2003
    Messages : 119
    Points : 115
    Points
    115
    Par défaut
    oui effectivement, ce sera mieux

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

Discussions similaires

  1. Modifier la date de création d'un fichier
    Par GEDY971 dans le forum Tcl/Tk
    Réponses: 2
    Dernier message: 20/08/2012, 19h35
  2. Modifier la date de création d'un fichier
    Par SilkyRoad dans le forum Contribuez
    Réponses: 0
    Dernier message: 29/12/2011, 14h54
  3. modifier la date de création d'un fichier jpg et avi.
    Par kandy dans le forum Windows Vista
    Réponses: 1
    Dernier message: 26/05/2009, 16h56
  4. Modifier la date de création d'un fichier
    Par Coussati dans le forum Langage
    Réponses: 1
    Dernier message: 19/05/2009, 08h31
  5. Date de création d'un fichier
    Par daphne35 dans le forum Windows
    Réponses: 5
    Dernier message: 20/01/2005, 17h09

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