Aller au contenu


[résolu] :  Supprimer certains fichier d'un dossier


  • Vous ne pouvez pas répondre à ce sujet
4 réponses à ce sujet

#1 Willy

    Ceinture Marron

  • Members
  • 131 messages

Posté 21 avril 2010 - 09:34

Bonjour à tous
J'ai besoin de supprimer en une seule opération les fichiers stockés dans un dossier selon un mois sélectionné.

Chaque nom de fichier se compose ainsi :
AVRIL-EQUIPIER1.txt
AVRIL-EQUIPIER2.txt
MAI-EQUIPIER13.txt
etc....

mon code suivant ne supprime que le premier fichier d'une liste et non pas la totalité des fichiers dont le mois commence par ex par AVRIL.

-- SUPPRESSION DES FICHIERS DISPO EQUIPIERS PAR LE MOIS SELECTIONNE

on supprimerFichiersDispEquipier
  the itemDelimiter = "-"
 
  -- affiche dans une liste les fichiers ayant le mois qui a été sélectionné
  linecount  = member("Listing_Equipiers").line.count
  moisASupprimer = member("RESULTMOIS").text
 
  repeat with i = 1 to linecount
    if member("Listing_Equipiers").line[i].item[1] = moisASupprimer then
      member("Listing_EquipiersDeleteFichier").text = member("Listing_EquipiersDeleteFichier").text &return&\
member("Listing_Equipiers").line[i] & ".txt"
    end if
  end repeat
  -- supprime la première ligne vierge du listing
  delete member("Listing_EquipiersDeleteFichier").line[1]
 
  -- Supprime les fichiers un a un
  testeurCod = Xtra("Filextra4").new()
  fileName = the moviepath& "Gardes\PLANNING_EQUIPIERS\" & member("Listing_EquipiersDeleteFichier").line[1]
 
  linecount2  = member("
Listing_EquipiersDeleteFichier").line.count
 
  repeat with x = 1 to linecount2
    -- teste si le fichier existe
    testeurCod.fx_FileExists(fileName)
    -- si il existe, je le supprime
    if testeurCod.fx_fileExists(fileName) then
      testeurCod.fx_FileDelete(fileName)
    end if
    -- supprime la ligne 1 du listing pour passer au fichier suivant
    delete member("
Listing_EquipiersDeleteFichier").line[1]
    -- Si la liste est vide, sortir de la boucle
    if member("
Listing_EquipiersDeleteFichier").text = "" then
      exit repeat
    end if
  end repeat
 
  testeurCod = VOID
  the itemDelimiter = "
,"
  -- Affiche les fichiers équipiers des autres mois restants
  afficheEquipierRestant
end
--*********************************************
--*********************************************

Merci de votre aide
William

#2 j'patauge

  • Members
  • 676 messages

Posté 22 avril 2010 - 05:18

Cela ne serait il pas plus simple e, faisant la boucle dans le sens inverse?
repeat with i = linecount donw to 1

#3 glurp

    Modérateur

  • Moderateur
  • 1 249 messages

Posté 22 avril 2010 - 07:09

Salut Willy,

Pour plus d'efficacité dans l'aide apportée, je te conseille de "tracer" toi-même le problème un maximum avec des "put" qui te permettront de voir par toi-même à quel endroit le problème survient.

Ici tu aurais pu tracer les variables i ou x, et voir jusqu'où elles allaient.

Ca nous permettrait de te répondre plus facilement, mais aussi plus rapidement.

#4 Willy

    Ceinture Marron

  • Members
  • 131 messages

Posté 22 avril 2010 - 10:12

glurp, le 22 avril 2010 - 07:09 , dit :

Salut Willy,

Pour plus d'efficacité dans l'aide apportée, je te conseille de "tracer" toi-même le problème un maximum avec des "put" qui te permettront de voir par toi-même à quel endroit le problème survient.

Ici tu aurais pu tracer les variables i ou x, et voir jusqu'où elles allaient.

Ca nous permettrait de te répondre plus facilement, mais aussi plus rapidement.

Bonjour et merci de votre aide à tous les deux.
J'ai fini par trouver mes erreurs grace au conseil de glurp et ça fonctionne enfin !. effectivement la fenêtre message est mon amie je ne l'utilise jamais assez. le ferai plus :oops:

en fait j'avais deux erreurs, voici le code remanié :

-- SUPPRESSION DES FICHIERS DISPO EQUIPIERS PAR LE MOIS SELECTIONNE

on supprimerFichiersDispEquipier
  the itemDelimiter = "-"
 
  -- affiche dans une liste les fichiers ayant le mois qui a été sélectionné
  linecount  = member("Listing_Equipiers").line.count-1
  moisASupprimer = member("RESULTMOIS").text
 
  -- boucle pour afficher les fichiers dont le mois sélectionné correspond
  repeat with i = 1 to linecount
    if member("Listing_Equipiers").line[i].item[1] = moisASupprimer then
      member("Listing_EquipiersDeleteFichier").text = member("Listing_EquipiersDeleteFichier").text &return&\
member("Listing_Equipiers").line[i] & ".txt"
    end if
  end repeat
 
  -- supprime la première ligne qui est une ligne vide -------- ICI PREMIERE ERREUR --------
  delete member("Listing_EquipiersDeleteFichier").line[1]
 
  -- Supprime les fichiers un a un
  testeurCod = Xtra("Filextra4").new()
  fileName = the moviepath& "Gardes\PLANNING_EQUIPIERS\"
  cheminFichier = fileName & member("
Listing_EquipiersDeleteFichier").line[1]
  linecount2  = member("
Listing_EquipiersDeleteFichier").line.count
 
  -- boucle pour tester si il existe et supprimer le fichier de la ligne 1
  repeat with x =  1 to linecount2
    -- teste si le fichier existe
    testeurCod.fx_FileExists(cheminFichier)
    -- si il existe, je le supprime
    if testeurCod.fx_fileExists(cheminFichier) then
      testeurCod.fx_FileDelete(cheminFichier)
    end if
   
    -- supprime la ligne 1 du listing pour passer au fichier suivant
    delete member("
Listing_EquipiersDeleteFichier").line[1]
   
    -- affiche le nouveau chemin du fichier suivant passé maintenant en ligne 1 -------- ICI DEUXIEME ERREUR --------
    cheminFichier = fileName & member("
Listing_EquipiersDeleteFichier").line[1]
   
    -- Si la liste est vide, sortir de la boucle
    if member("
Listing_EquipiersDeleteFichier").text = "" then
      exit repeat
    end if
  end repeat
 
  testeurCod = VOID
  the itemDelimiter = "
,"
 
  -- affiche les fichiers mois équipiers restants
  afficheEquipierRestant
end
--*********************************************
--*********************************************

Merci encore
William

#5 glurp

    Modérateur

  • Moderateur
  • 1 249 messages

Posté 22 avril 2010 - 01:52

Pas de soucis, merci pour le retour ;)





1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS - Tel. 0826 466 613 - Fax. 01 72 70 31 38

FFP