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 :

Suppression de fichiers avec joker


Sujet :

Langage Delphi

  1. #1
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut Suppression de fichiers avec joker
    Bonjour

    Je voudrais supprimer tous les fichiers *.shx, *.shp et *.dbf d'un répertoire.
    Est-ce possible sans utiliser la fonction «DeleteFile» dans 3 boucles «while» avec «FindNext» pour faire plus court et plus rapide ?

    Merci d'avance

  2. #2
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Peut-être qu'avec les ShFileOperation c'est plus facile. Fais une recherche sur ce mot et ses dérivés (pluriel, espaces, etc.), c'est un sujet qui a déjà été traités plusieurs fois.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  3. #3
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    Cela fonctionne

    Merci à toi, vénéré Delphiste

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 93
    Points : 53
    Points
    53
    Par défaut
    Peut-être cette procédure que j'utilise?

    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
     
     
    procedure DeleteFiles (const Path, Mask : string; recursive : boolean);
    var
      Result    : integer;
      SearchRec : TSearchRec;
    begin
      Result := FindFirst(Path + Mask, faAnyFile - faDirectory, SearchRec);
      while Result = 0 do
      begin
        if not DeleteFile (Path + SearchRec.name) then
        begin
          FileSetAttr (Path + SearchRec.name, 0); { reset all flags }
          DeleteFile (Path + SearchRec.name);
        end;
        Result := FindNext(SearchRec);
      end;
      FindClose(SearchRec);
     
      if not recursive then
        exit;
     
      Result := FindFirst(Path + '*.*', faDirectory, SearchRec);
      while Result = 0 do
      begin
        if (SearchRec.name <> '.') and (SearchRec.name <> '..') then
        begin
          FileSetAttr (Path + SearchRec.name, faDirectory);
          DeleteFiles (Path + SearchRec.name + '\', Mask, TRUE);
          end;
        Result := FindNext(SearchRec);
      end;
      FindClose(SearchRec);
    end;
     
     
    begin
       // exemples comment l'utiliser  
       deletefiles('C:\Program Files\temp\temp\','*.lck',true);
       deletefiles('\\saturne\C\Program Files\temp\temp2\','*.txt',true);
       deletefiles('\\jupiter\C\Program Files\temp\temp3\','*.dat',true);
    end.

  5. #5
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    J'ai suivi le conseil de sjrd et utilisé «SHFileOperation».
    Cela donne
    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
     procedure FileSuppr(Handle:HWND;Source:String ; FlagsOptions: FILEOP_FLAGS);
     var
       lpFileOp:TSHFILEOPSTRUCTA;
       TabFrom:array[0..255] of char;
       i:integer;
     begin
          For i:=0 to length(Source)-1 do TabFrom[i]:=Source[i+1];
          TabFrom[length(Source)]:=#0;
          TabFrom[length(Source)+1]:=#0;
     
          lpFileOp.Wnd:=handle;
          lpFileOp.wFunc:=FO_DELETE; // l'action sera un effacement
          lpFileOp.pFrom:=TabFrom; // contient le ou les fichiers /dossiers à recopier
          lpFileOp.pTo:='';
          lpFileOp.fFlags:=FlagsOptions;
          SHFileOperation(lpFileOp); // procède à l'effacement
     end;
     
    begin    // exemple d'appel 
      FileSuppr(Handle,'E:\Carto\*.Shp', FOF_NOCONFIRMATION);
    end.

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

Discussions similaires

  1. [FTP] Suppression de fichiers avec unlink
    Par rodgeur62 dans le forum Langage
    Réponses: 8
    Dernier message: 03/06/2008, 10h45
  2. Réponses: 9
    Dernier message: 05/12/2007, 13h14
  3. Recherche de fichier avec joker
    Par defluc dans le forum Langage
    Réponses: 1
    Dernier message: 15/10/2007, 12h27
  4. Réponses: 4
    Dernier message: 11/11/2006, 19h50
  5. Suppression de fichiers avec csh
    Par mavina dans le forum Linux
    Réponses: 9
    Dernier message: 28/04/2006, 11h10

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