Page 1 sur 2
DeleteFile() ??
Publié : ven. 08/juil./2011 19:39
par anissa
Bonjour à tous
Code : Tout sélectionner
If DeleteFile(FileName$)
Debug "Fichier supprimé"
Else
Debug "Le fichier n'a pas pu être supprimé" ; pourquoi??
Endif
Ma question est très simple: pourquoi ce code ne supprime pas tous les fichiers,
il supprime certains fichiers mais pas tous. Je me suis dit alors qu'il supprime peut être
les fichiers dont l'attribut est différent de (readonly), alors j'ai modifié les attributs de tous
les fichiers (readonly) avant de les supprimer.
Même résultat
Quelqu'un a une idée ?
Re: DeleteFile() ??
Publié : ven. 08/juil./2011 19:52
par nico
T'es sous quel OS?
Tu veux supprimer des fichiers dans quel dossier? (chemin complet)
N'oublie pas qu'il faut peut être avoir les droits administrateurs pour supprimer certains fichiers!
Re: DeleteFile() ??
Publié : ven. 08/juil./2011 20:02
par anissa
T'es sous quel OS?
Window XP Sp3
Tu veux supprimer des fichiers dans quel dossier? (chemin complet)
Plusieurs dossiers, c'est le chemin complet qui est défini dans FileName$
N'oublie pas qu'il faut peut être avoir les droits administrateurs pour supprimer certains fichiers!
Ah Bon ? exemples? et comment le savoir ?
Il y a des fichiers que je connais bien (certains ont été créés par moi même et d'autres dérivés ou temporaires...)
Re: DeleteFile() ??
Publié : ven. 08/juil./2011 20:07
par Ar-S
As tu vérifié que ton fichier à supprimer n'est pas en train de tourner ?
Re: DeleteFile() ??
Publié : ven. 08/juil./2011 20:12
par anissa
As tu vérifié que ton fichier à supprimer n'est pas en train de tourner ?
Non, tous les fichiers concernés sont au repos (et fermés).
Est ce que cela ne vous est jamais arrivé?
Re: DeleteFile() ??
Publié : ven. 08/juil./2011 20:35
par Ar-S
non..
Peux tu donner un vrai exemple de chemin ?
Re: DeleteFile() ??
Publié : ven. 08/juil./2011 21:34
par anissa
Peux tu donner un vrai exemple de chemin ?
En fait, j'utilise un ExamineDirectory() et en parcourant plusieurs répertoires
j'affiche sur un grid le chemin complet du fichier répondant aux critères définis. La suppression se fait donc à l'aide d'un bouton après avoir sélectionné le fichier à supprimer), le grid est composé de 2 colonnes
colonne 1: nom fichier (exemple: purebasic.exe)
colonne 2: chemin complet v(exemple : c:\prorgram file\purebasic.exe)
Pour supprimer un fichier je fais donc:
Code : Tout sélectionner
wRow=GetGadgetState(#Grid) ; je récupère la ligne sélectionnée
If Wrow>=0
WFile$=GetGatgetItemText(#Grid,wRow,0) ; je récupère le nom du fichier à supprimer
WFullPath$=GetGatgetItemText(#Grid,wRow,1) ; je récupère le chemin complet
If DeleteFile(WFullPath$)
Debug "Le fichier " + Wfile$ + " a été supprimé")
Else
Debug "Le fichier " + Wfile$ + " n'a pu être supprimé")
EndIf
EndIf
Je n'ai pas le code sur moi maintenant mais ça correspond globalement à cet exemple..
Re: DeleteFile() ??
Publié : ven. 08/juil./2011 21:41
par Backup
Re: DeleteFile() ??
Publié : sam. 09/juil./2011 21:13
par anissa
??
Dobro ! Ai-je le droit à une petite explication?
Re: DeleteFile() ??
Publié : sam. 09/juil./2011 21:22
par SPH
anissa a écrit :
??
Dobro ! Ai-je le droit à une petite explication?
Un aimant permet d'effacer les donnees d'un disque dur.
Re: DeleteFile() ??
Publié : sam. 09/juil./2011 21:31
par anissa
Un aimant permet d'effacer les donnees d'un disque dur.
Avez-vous bien dormi tous les deux? Dobro ! Sph ! Au secours ! Dites moi que je ne rêve pas!!!
Re: DeleteFile() ??
Publié : sam. 09/juil./2011 21:59
par Le Soldat Inconnu
personnellement, je n'ai jamais eu de soucis avec DeleteFile()
Vérifie bien qu'il n'y a pas de problème de syntaxe dans ton code, par exemple en ajoutant un Debug NomFichier et un Debug FileSize(NomFichier) avant le DeleteFile(NomFichier)
Histoire de vérifier qu'il n'y a pas une coquille de syntaxe qui s'est glissée dans le code
Re: DeleteFile() ??
Publié : sam. 09/juil./2011 22:22
par anissa
Vérifie bien qu'il n'y a pas de problème de syntaxe dans ton code, par exemple en ajoutant un Debug NomFichier et un Debug FileSize(NomFichier) avant le DeleteFile(NomFichier)
Histoire de vérifier qu'il n'y a pas une coquille de syntaxe qui s'est glissée dans le code
Justement, j'affiche dans le grid (listIconGadget) le nom du fichier ainsi que le chemin complet, donc je peux voir en clair sur le grid la liste de tous les fichiers (+ les chemins à côté), apparemment il n'y a rien à signaler. Pour la taille du fichier (file size) ça sert à quoi ce test? Pour la syntaxe, si elle était mauvaise, elle n'aurait pas fonctionné pour un certain nombre de fichiers... (quelques fichiers sont effectivement supprimés, mais une bonne partie ne l'est pas) je ne sais pas comment faire pour que vous testiez mon code du moment que ce ne sont pas les mêmes fichiers qui se trouvent sur nos pc...
Compliqué n'est ce pas??
Re: DeleteFile() ??
Publié : dim. 10/juil./2011 12:57
par Anonyme2
Si vraiment le nom de fichier est correct (c'est sous windows ?), il y a de grande chance pour que l'API utlisée par PureBasic retourne uen erreur.
Je pense que l'API utilisée doit être DeleteFile (
http://msdn.microsoft.com/en-us/library ... 85%29.aspx) et si c'est le cas il y a un code d'erreur
Met ceci après ton deletefile
les codes d'erreurs suivant peuvent être retournés :
2 : Le fichier n'a pas été trouvé --> c'est un problème avec ton nom de fichier
3 : Le chemin du fichier n'a pas été trouvé
5 : (ERROR_ACCESS_DENIED), Le fichier est en lecture seul
Si le fichier est mappé en mémoire, la fonction échoue etc.
Le doc MS dit aussi qu'il faut utiliser l'API SHFileOperation si les opérations de suppression utilise la récursivité.
Les codes d'erreurs c'est ici
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
Re: DeleteFile() ??
Publié : dim. 10/juil./2011 21:53
par anissa
Si vraiment le nom de fichier est correct (c'est sous windows ?),
Oui sous windows Xp P3
Met ceci après ton deletefile
Merci beaucoup pour cette information, je vais l'essayer demain
(ERROR_ACCESS_DENIED), Le fichier est en lecture seul
Est ce que je peux changer l'attribut du fichier durant le traitement juste avant de le supprimer? (c'est ce que je fais mais je ne sais pas si l'attribut change réelllement, je n'ai pas vérifié)
Si le fichier est mappé en mémoire, la fonction échoue etc.
Là je pige rien du tout, c'est quoi mappé??
Merci pour tout
(J'essayerai demain)