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 :

Vérification de suppression de dossier+ fichier


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 88
    Points : 11
    Points
    11
    Par défaut Vérification de suppression de dossier+ fichier
    Bonsoir à tous,

    Sur un projet, qui consiste a supprimer des dossiers, plus des fichiers, je cherche a faire une vérification pour savoir si ces derniers sont bien supprimés?
    Dans ce cas, il sera affiché, X supprimé, ou dans le cas d'une erreur de suppression, X non supprimé.

    Est-ce que un code de ce type, pourrait fonctionner:

    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
    procedure ScruterDossiers(Folder: string);
     
      // Chercher si les fichers (Tableau Files) existe dans le dossier
      procedure SearchInFolder;
      var
        I: Integer;
        F : TextFile;
      begin
        for I := Low(Files) to High(Files) do
          if FileExists(Folder + Files[i]) then
            Form1.Memo1.Lines.Add(Folder + Files[i] + ': trouvé !');
            Writeln(F,Folder + Files[i] + ': trouvé !');
    DeletFile(Files[i]);
     
    If FileExists(Files[i]) then
    begin
    Writeln(F, Files[i] + ':Non supprimé!');
               Closefile(F); 
      end;

    Merci pour vos réponses.

  2. #2
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Re,

    Avant toute chose, si je cerne bien ce que tu souhaites faire, c'est :

    - Si un fichier à était trouvé, mettre dans le "Fichier servant de log" l'endroit où il a était trouvé et l'effacer par la suite

    - Si le fichier n'a pas était trouvé, mettre dans le "Fichier servant de log" Fichier bien supprimé .

    Merci

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 88
    Points : 11
    Points
    11
    Par défaut
    Re,

    Si il est trouvé et supprimé:
    • Le noter dans le log(cela fonctionne déjà)
    • Le supprimer(cele fonctionne pour les fichiers)
    • Noter que la suppression est effectuéé(cela fonctionne également).

    Si il est trouvé, mais pas supprimé:
    • Noter qu'il a été trouvé, mais pas supprimé

    Si il n'est pas trouvé: auncune action.Cela fonctionne également.

    Voilà,c'est le second point que je voudrais tenter d'éclaircir en faisant une vérif de ce qui est censé être supprimé.

    Ma commande ne pourra passer?

    Merci.

  4. #4
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    SAlut
    Je dois pas comprendre la question non plus mais dans l'aide de DeleteFile tu as ca
    "La fonction DeleteFile efface sur le disque le fichier intitulé FileName. Si le fichier ne peut être supprimé ou n'existe pas, la fonction renvoie false."

    Donc il te suffi de concerver la valeur renvoyer par DeleteFile, et au moment de faire tes teste tu regardes si la DeleteFile t'a renvoyer True (fichier belle et bien supprimé) ou False (Fichier n'a pu etre supprimé).

    Perso je ferai un truc comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    If DeletFile(Files[i]) Then
    Begin
    //La suppression a reussi
    Writeln(F, Files[i] + ':supprimé!');
    End
    Else
    Begin
    //La suppression a echouée
    Writeln(F, Files[i] + ':Non supprimé!');
    End;
    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    Expert éminent sénior
    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 : 61
    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
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    En se basant sur la remarque de Qwazerty, modifie la procédure imbriquée SearchInFolder ainsi:

    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
     
    procedure ScruterDossiers(Folder: string);
      // Chercher si les fichers (Tableau Files) existe dans le dossier
      procedure SearchInFolder;
      var
        I: Integer;
      begin
        for I := Low(Files) to High(Files) do
          if FileExists(Folder + Files[i]) then
          begin
            Form1.Memo1.Lines.Add(Folder + Files[i] + ': trouvé !');
            if DeleteFile(Folder + Files[i]) then
              WriteLn(F, Folder + Files[i] + ': trouvé et supprimé.')
            else
              WriteLn(F, Folder + Files[i] + ': trouvé et NON supprimé.');
          end;
      end;
     
    var
      S: TSearchRec;
    begin
      // ...
    end;
    @+

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 88
    Points : 11
    Points
    11
    Par défaut
    Salut,

    Merci de m'avir répondu!


    Ok, ces deux codes fonctionnent! Mais..

    Cl@udius, j'avais déjà tenter cela, mais il m'arrive une erreur car quand je trouve un fichier, cela doit être noté dans le .txt, ainsi que dans le memo1.

    Seulement, quand je rajoute(ce qui est en gras) cela bloque, il me dit qu'il End Attendue, mais Else trouvé

    Et si je mets End, avant Else, cela me scrute tout les fichiers, de tout les repertoires..

    begin
    Form1.Memo1.Lines.Add(Folder + Files[i] + ': trouvé !'); WriteLn(F, Folder + Files[i] + ': trouvé!');
    if DeleteFile(Folder + Files[i]) then
    Form1.Memo1.Lines.Add(Folder + Files[i] + ': supprimé !');
    WriteLn(F, Folder + Files[i] + ': supprimé.')
    else
    Form1.Memo1.Lines.Add(Folder + Files[i] + ': non supprimé !'); WriteLn(F, Folder + Files[i] + ': non supprimé.');
    end;
    end;

    Tu peux mettre seulement une action dans pour une condition?

  7. #7
    Expert éminent sénior
    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 : 61
    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
    Points : 10 008
    Points
    10 008
    Par défaut
    Quand tu as plusieurs lignes à exécuter dans des instructions if .. then .. else, il faut utiliser un begin .. end.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
      Form1.Memo1.Lines.Add(Folder + Files[i] + ': trouvé !');
      WriteLn(F, Folder + Files[i] + ': trouvé!');
      if DeleteFile(Folder + Files[i]) then
        begin
          Form1.Memo1.Lines.Add(Folder + Files[i] + ': supprimé !');
          WriteLn(F, Folder + Files[i] + ': supprimé.');
        end
      else
        begin
          Form1.Memo1.Lines.Add(Folder + Files[i] + ': non supprimé !');
          WriteLn(F, Folder + Files[i] + ': non supprimé.');
        end;
    PS: Utilise la balise CODE plutot que la balise QUOTE.

    @+ Claudius

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 88
    Points : 11
    Points
    11
    Par défaut
    Re,

    Ok pour la balise code!

    Ca bloque..Je en sais pourquoi là..

    Cela me note dans le Memo1 + .txt, tous les repertoires, avec le nom de fichier que je suis censé trouver.
    Pourtant, bien sur, ces fichiers ne sont pas dans tous les dossiers du système!


    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
    procedure ScruterDossiers(Folder: string);
     
      // Chercher si les fichers (Tableau Files) existe dans le dossier
      procedure SearchInFolder;
      var
        I: Integer;
      begin
        for I := Low(Files) to High(Files) do
          if FileExists(Folder + Files[i]) then
          begin
           Form1.Memo1.Lines.Add(Folder + Files[i] + ': trouvé !');
           WriteLn(F, Folder + Files[i] + ': trouvé!');
            if DeleteFile(Folder + Files[i]) then
              Form1.Memo1.Lines.Add(Folder + Files[i] + ': supprimé !');
              WriteLn(F, Folder + Files[i] + ': supprimé.')
           end
            else
             begin
              Form1.Memo1.Lines.Add(Folder + Files[i] + ': non supprimé !');
              WriteLn(F, Folder + Files[i] + ': non supprimé!');
             end;
      end;

  9. #9
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    338
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 338
    Points : 383
    Points
    383
    Par défaut
    bonjour
    Citation Envoyé par belle5656 Voir le message
    Tu peux mettre seulement une action dans pour une condition?
    si plusieurs actions, les mettre dans un bloc begin / end;


    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
      begin
        for I := Low(Files) to High(Files) do
          if FileExists(Folder + Files[i]) then
          begin
           Form1.Memo1.Lines.Add(Folder + Files[i] + ': trouvé !');
           WriteLn(F, Folder + Files[i] + ': trouvé!');
            if DeleteFile(Folder + Files[i]) then begin
              Form1.Memo1.Lines.Add(Folder + Files[i] + ': supprimé !');
              WriteLn(F, Folder + Files[i] + ': supprimé.')
            end;
          end
            else
             begin
              Form1.Memo1.Lines.Add(Folder + Files[i] + ': non supprimé !');
              WriteLn(F, Folder + Files[i] + ': non supprimé!');
             end;
      end;
    à+

  10. #10
    Expert éminent sénior
    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 : 61
    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
    Points : 10 008
    Points
    10 008
    Par défaut
    Re,

    Fais un petit effort de relecture de ton code tout de même

    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
    procedure ScruterDossiers(Folder: string);
    
      // Chercher si les fichers (Tableau Files) existe dans le dossier
      procedure SearchInFolder;
      var
        I: Integer;
      begin
        for I := Low(Files) to High(Files) do
          if FileExists(Folder + Files[i]) then
          begin
            Form1.Memo1.Lines.Add(Folder + Files[i] + ': trouvé !');
            WriteLn(F, Folder + Files[i] + ': trouvé!');
            if DeleteFile(Folder + Files[i]) then
              begin // Ajout
                Form1.Memo1.Lines.Add(Folder + Files[i] + ': supprimé !');
                WriteLn(F, Folder + Files[i] + ': supprimé.');
              end
            else
              begin
                Form1.Memo1.Lines.Add(Folder + Files[i] + ': non supprimé !');
                WriteLn(F, Folder + Files[i] + ': non supprimé!');
              end;
          end;
     // ...
    Dans ce genre de situation, le débogage en pas-à-pas est une bonne manière de voir pourquoi ton code ne se déroule pas comme tu le souhaites.

    @+

  11. #11
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    SAlut
    Je crois que tu fais des erreur dans tes bouces et banban54 aussi ;p

    Je te propose ca

    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
    procedure ScruterDossiers(Folder: string);
     
      // Chercher si les fichers (Tableau Files) existe dans le dossier
      procedure SearchInFolder;
      var
        I: Integer;
      begin
        for I := Low(Files) to High(Files) do
          if FileExists(Folder + Files[i]) then
          begin
           Form1.Memo1.Lines.Add(Folder + Files[i] + ': trouvé !');
           WriteLn(F, Folder + Files[i] + ': trouvé!');
           if DeleteFile(Folder + Files[i]) then
           begin
              Form1.Memo1.Lines.Add(Folder + Files[i] + ': supprimé !');
             WriteLn(F, Folder + Files[i] + ': supprimé.'); // ne pas oublier le ; ici
           end
           else
           begin
             Form1.Memo1.Lines.Add(Folder + Files[i] + ': non supprimé !');
             WriteLn(F, Folder + Files[i] + ': non supprimé!');
           end;
      end;
    A++

    Ps .... bon ok trop lent
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  12. #12
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    338
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 338
    Points : 383
    Points
    383
    Par défaut
    bonjour Qwazerty
    Citation Envoyé par Qwazerty Voir le message
    SAlut
    Je crois que tu fais des erreur dans tes bouces et banban54 aussi ;p

    Je te propose ca
    Ton code est identique au mien, il nous manque bien un "end;" à tous les deux,
    mais je répondais à la question "Tu peux mettre seulement une action dans pour une condition?".
    Quand au ";" sur la ligne précédant le "end else", il n'est pas obligatoire.

    à+

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 88
    Points : 11
    Points
    11
    Par défaut
    Ok,

    Merci a tous,

    Cl@udius,

    Fais un petit effort de relecture de ton code tout de même
    Oui, tu as raison désolé.

    Je dois être plus attentif a la re-lecture des codes.

    Pour ton post de 09H05:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    else
              WriteLn(F, Folder + Files[i] + ': trouvé et NON supprimé.');
          end;
    Dans cet exemple, il n'y a pas de begin après else donc cela confirme bien, qu'il faut Begin et End quand il y a plusieurs instructions pour une condition.


    Merci à tous, je note comme résolu.

  14. #14
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Citation Envoyé par banban54 Voir le message
    bonjour Qwazerty


    Ton code est identique au mien, il nous manque bien un "end;" à tous les deux,
    mais je répondais à la question "Tu peux mettre seulement une action dans pour une condition?".
    Quand au ";" sur la ligne précédant le "end else", il n'est pas obligatoire.

    à+
    SAlut
    J'etait en train de faire un message pour faire remarquer que non, les 2 codes ne revenaient pas au meme et j'ai relu ton message en effet j'ai oublié un End; a la fin et si toi tu rajoutes un end; au milieu on revient a la meme chose
    Mais bon de toutes facon Claudius nous a gratté :p
    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

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

Discussions similaires

  1. [WD-2002] Suppression dossier fichiers
    Par bubu92 dans le forum Word
    Réponses: 6
    Dernier message: 21/06/2011, 00h32
  2. Réponses: 0
    Dernier message: 24/03/2011, 15h10
  3. Forcer la suppression d'un fichier / dossier
    Par grogui dans le forum Windows Forms
    Réponses: 2
    Dernier message: 01/04/2009, 17h29
  4. suppression de dossiers avec fichier txt en paramètre
    Par sparowme dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 29/10/2008, 12h31
  5. Réponses: 6
    Dernier message: 15/04/2008, 19h46

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