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 :

Supprimer le fichier le plus ancien dans un dossier


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Février 2007
    Messages : 3
    Par défaut Supprimer le fichier le plus ancien dans un dossier
    Bonjour à tous,

    Je suis face à un problème provenant d'une application qui génère des fichiers de sauvegardes régulièrement et qui occupe de plus en plus d'espace sur le disque dur. Je cherche comment supprimer le plus ancien de ces fichiers . je ne sais pas encore si je ferais cette suppression à interval régulier, ou à chaque nouvelle sauvegarde générée.

    Merci de votre aide car je débute en programmation et à part le site ou le forum, j'essaie de me débrouiller tout seul.
    J'essaies t'aider un ami qui vient de créer une petite entreprise ( etc.... )

  2. #2
    Membre éclairé Avatar de aliwassem
    Inscrit en
    Janvier 2004
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 293
    Par défaut
    salut

    vous pouvez utiliser la date de la modification de vos fichiers , c-v-d vous allez lister les fichiers de sauvgarde et comparez les dates avec le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DateToStr(FileDateToDateTime(FileAge('c:\fichier.txt'))) ;
     
    TimeToStr(FileDateToDateTime(FileAge('c:\fichier.txt'))) ;
    et vous pouvez utiliser la Unite DateUtils pour les datetime fonction
    comme comparison des dates et le temp.......

    essaye avec ca...............

  3. #3
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut et bienvenue sur ce forum

    Voici une petite fonction qui renvoie le nom du fichier le plus ancien d'un dossier.
    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
     
    function OldestFile(const Dossier, Template: string): TFilename;
    var
      Info: TSearchRec;
      CurrentTime: Integer;
    begin
      result := '';
      if FindFirst(Dossier + Template, 0, Info) = 0 then
      begin
        repeat
          if (result = '') or
             (Info.Time < CurrentTime) then
          begin
            result := Info.Name;
            CurrentTime := Info.Time;
          end;
        until FindNext(Info) <> 0;
        FindClose(Info);
      end;
    end;
    Exemple d'utilisation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      ShowMessage(OldestFile('C:\MonDossier\Backups\', '*.sav'));
    @+ Claudius

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Février 2007
    Messages : 3
    Par défaut
    Merci à vous de votre rapidité, je vais pouvoir créer mon aplication ce week-end.
    je vous tiendrais au courant si je m'en sors

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Février 2007
    Messages : 3
    Par défaut
    J'ai essayé de mettre ne pratique vos informations. Ca marche lorsque j'utilise ShowMessage mais si je demande à supprimer le fichier, je m'apreçois qu'il existe toujours dans le dossier.

    Voilà 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
    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
    51
    52
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs,ShellApi, StdCtrls;
     
    type
      TForm1 = class(TForm)
     
        procedure Timer1Timer(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
    function OldestFile(const Dossier, Template: string): TFilename;
    var
      Info: TSearchRec;
      CurrentTime: Integer;
    begin
      result := '';
      if FindFirst(Dossier + Template, 0, Info) = 0 then
      begin
        repeat
          if (result = '') or
             (Info.Time < CurrentTime) then
          begin
            result := Info.Name;
            CurrentTime := Info.Time;
          end;
        until FindNext(Info) <> 0;
        FindClose(Info);
      end;
    end;
     
     
    procedure TForm1.Timer1Timer(Sender: TObject);
     
    begin
    Timer1.Interval :=30000;
    DeleteFile(OldestFile('D:\Nouveau dossier\','*.bmp'));
    end;
    end.
    Comment pourrais-je me passer de cet interval et le remplacer par la vérification de création d'un nouveau fichier.

    Merci à tous et bon dimanche

    Merci d'utiliser les balises code

  6. #6
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut

    Dans la fonction OldestFile, remplace la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       result := Info.Name;
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      result := Dossier + Info.Name;
    Ainsi la fonction te renvoie le nom du fichier avec son chemin d'accès.

    Et dans ton timer, vérifie que la fonction renvoie un résultat avant d'effectuer la suppression.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    procedure TForm1.Timer1Timer(Sender: TObject);
    var
      FileToDelete: TFilename;
    begin
      // Timer1.Interval :=30000; // Se situe normalement en dehors de l'event OnTimer.
      FileToDelete := OldestFile('D:\Nouveau dossier\','*.bmp')
      if FileToDelete <> '' then DeleteFile(FileToDelete);
    end;
    @+ Claudius

Discussions similaires

  1. [Batch] Supprimer le fichier le plus ancien d'un dossier
    Par Egan69 dans le forum Scripts/Batch
    Réponses: 11
    Dernier message: 27/06/2013, 13h27
  2. Réponses: 1
    Dernier message: 23/07/2010, 20h39
  3. [PHP 5.3] Récupèrer le nom du fichier le plus récent dans un dossier
    Par oOBaalberithOo dans le forum Langage
    Réponses: 3
    Dernier message: 25/02/2010, 14h26
  4. Réponses: 4
    Dernier message: 06/08/2008, 14h52
  5. Obtenir le nom du fichier le plus récent dans un dossier.
    Par agentchico dans le forum Windows
    Réponses: 1
    Dernier message: 06/06/2008, 08h10

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