VB6 FSO CreateFolder erreur 58 (already exists) alors qu'il n'existe pas
Herve_be
Messages postés
1121
Date d'inscription
Statut
Membre
Dernière intervention
-
Herve_be Messages postés 1121 Date d'inscription Statut Membre Dernière intervention -
Herve_be Messages postés 1121 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je voudrais créer un répertoire en utilisant ce code
FName est un string qui contient le nom du sous-répertoire à créer.
La plupart du temps ceci fonctionne correctement, parfois sur certains PC ça ne fonctionne pas, je ne comprends pas pourquoi, et vous ?
Je voudrais créer un répertoire en utilisant ce code
Dim fPath As New FileSystemObject If fPath.FolderExists(App.Path & "\Templates") Then fPath.DeleteFolder (App.Path & "\Templates"), True DoEvents ' donc "Templates" n'existe pas fPath.CreateFolder (App.Path & "\Templates") DoEvents If fPath.FolderExists(App.Path & "\Templates") Then ' donc "Templates" existe et est vide fPath.CreateFolder (App.Path & "\Templates\" & FName) ' ==> erreur 58 !
FName est un string qui contient le nom du sous-répertoire à créer.
La plupart du temps ceci fonctionne correctement, parfois sur certains PC ça ne fonctionne pas, je ne comprends pas pourquoi, et vous ?
A voir également:
- VB6 FSO CreateFolder erreur 58 (already exists) alors qu'il n'existe pas
- Vb6 - Télécharger - Divers Utilitaires
- Comment supprimer un fichier qui n'existe plus - Guide
- 07 58 indicatif - Guide
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
8 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, peut-être pourrais-tu vérifier si le dossier existe avant de le créer?
Il me sembler que c'est ce que je fais, regarde mon code
si "\Templates" existe je le supprime
je crée "\Templates"
si "\Templates" existe (donc il est vide puisque je viens de le créer) alors
je crée le sous-folder "\Templates\" & FName ==> erreur 58 !
si "\Templates" existe je le supprime
je crée "\Templates"
si "\Templates" existe (donc il est vide puisque je viens de le créer) alors
je crée le sous-folder "\Templates\" & FName ==> erreur 58 !
Comme indiqué dans mon premier message, FName est un string qui contient le nom du sous-répertoire à créer.
Je ne comprends pas ta réponse
si le folder "Templates" existe je le supprime, pas d'erreur sur cette ligne, donc il n'existe pas ou plus
je crée le folder "Templates", pas d'erreur sur cette ligne donc il existe et est vide puisque je viens de le créer
si le folder "Templates" existe je crée le sous-folder Fname dans "Templates" ==> erreur 58
Je ne comprends pas ta réponse
si le folder "Templates" existe je le supprime, pas d'erreur sur cette ligne, donc il n'existe pas ou plus
je crée le folder "Templates", pas d'erreur sur cette ligne donc il existe et est vide puisque je viens de le créer
si le folder "Templates" existe je crée le sous-folder Fname dans "Templates" ==> erreur 58
Je vois bien ce que ton programme fait avec FName, et ce que tu supposes qu'il contient.
FName est une variable qui contient une valeur. Quelle est cette valeur quand l'erreur se produit?
Par ailleurs, je suggère d'utiliser FolderExists avant d’appeler CreateFolder, afin de vérifier si CreateFolder et FolderExists sont d'accord sur l'existence du dossier. Sois actif, modifie ton programme, ajoute du diagnostic, cela ne peut que t'aider.
FName est une variable qui contient une valeur. Quelle est cette valeur quand l'erreur se produit?
Par ailleurs, je suggère d'utiliser FolderExists avant d’appeler CreateFolder, afin de vérifier si CreateFolder et FolderExists sont d'accord sur l'existence du dossier. Sois actif, modifie ton programme, ajoute du diagnostic, cela ne peut que t'aider.
Ce que te demandes yg_be (salutations au passage), c'est de vérifier le tout.
1- vérifier l'existence de ton sous-dossier
2- vérifier l'existence de ton fichier.
On ne fait, ici, que supposer.
VB6 n'est plus maintenu depuis longtemps maintenant, et, déjà sous win 2000, il y avait plein de bugs...
Vérifies le tout avec la fonction Dir() peut-être :
ça devrait t'indiquer où se situe l'erreur, si toutefois il y en a une...
1- vérifier l'existence de ton sous-dossier
2- vérifier l'existence de ton fichier.
On ne fait, ici, que supposer.
VB6 n'est plus maintenu depuis longtemps maintenant, et, déjà sous win 2000, il y avait plein de bugs...
Vérifies le tout avec la fonction Dir() peut-être :
Dim fPath As New FileSystemObject If fPath.FolderExists(App.Path & "\Templates") Then fPath.DeleteFolder (App.Path & "\Templates"), True DoEvents ' donc "Templates" n'existe pas fPath.CreateFolder (App.Path & "\Templates") DoEvents MsgBox Dir(App.Path & "\Templates\") MsgBox Dir(App.Path & "\Templates\" & FName) If fPath.FolderExists(App.Path & "\Templates") Then ' donc "Templates" existe et est vide fPath.CreateFolder (App.Path & "\Templates\" & FName) ' ==> erreur 58 !
ça devrait t'indiquer où se situe l'erreur, si toutefois il y en a une...
Fname peut contenir une des valeurs suivantes
Alpheus
Aqua Illumination
Aqua Medic
Aquanest
Arcadia
ATI
Divers
DsunY
Ecotech
Eshine Aquabeauty
Evergrow
Giesemann
Maxspect
Orphek
Rak-Tech
Vertex
c'est à dire la liste des sous-répertoires qu'il est sensé créer.
Je ne peux pas vérifier avec Dir chez les 4.791 utilisateurs sachant que l'erreur s'est produite chez 2 d'entre eux, chez moi ça fonctionne très bien.
J'ai ajouté le nom du folder qu'il tente de créer dans le message d'erreur 58, ainsi je saurai au moins duquel il s'agit.
Alpheus
Aqua Illumination
Aqua Medic
Aquanest
Arcadia
ATI
Divers
DsunY
Ecotech
Eshine Aquabeauty
Evergrow
Giesemann
Maxspect
Orphek
Rak-Tech
Vertex
c'est à dire la liste des sous-répertoires qu'il est sensé créer.
Je ne peux pas vérifier avec Dir chez les 4.791 utilisateurs sachant que l'erreur s'est produite chez 2 d'entre eux, chez moi ça fonctionne très bien.
J'ai ajouté le nom du folder qu'il tente de créer dans le message d'erreur 58, ainsi je saurai au moins duquel il s'agit.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
J'ai à nouveau ponctuellement la même erreur alors que la plupart du temps tout fonctionne.
Je rappelle mon code
58 signifie "File already exists" : pourquoi survient-elle lors de la création d'un répertoire ?
J'ai à nouveau ponctuellement la même erreur alors que la plupart du temps tout fonctionne.
Je rappelle mon code
Dim sh As Object Dim fPath As New FileSystemObject If fPath.FolderExists(App.Path & "\Templates") Then fPath.DeleteFolder (App.Path & "\Templates"), True ' Destruction complète du dossier et des fichiers qu'il contient DoEvents fPath.CreateFolder (App.Path & "\Templates") ' Création du dossier vide DoEvents If Not fPath.FolderExists(App.Path & "\Templates") Then ' Vérifier si le dossier a bien été créé MsgBox ("Impossible de créer le répertoire " & App.Path & "\Templates"), vbExclamation Else fPath.CreateFolder (App.Path & "\Templates\" & Rootitem.Name) ' => erreur 58App.Path & "\Templates\" & Rootitem.Name = "C:\AQUA\Templates\Aquanest"
58 signifie "File already exists" : pourquoi survient-elle lors de la création d'un répertoire ?
Comme je l'ai expliqué je ne peux pas ajouter les Dir
parce que parmi 4.837 utilisateurs le problème s'est posé 2 fois mi juin et aujourd’hui.
Les utilisateurs qui ont rencontré ce problème ne l'ont pas signalé, je le sais parce que le logiciel envoie un rapport d'erreur, je ne pense pas qu'ils feront attention au message.
Je ne vois pas non plus ce que ces Dir pourraient apporter
soit le répertoire existe alors pourquoi n'a-t-il pas été supprimé ?
soit le répertoire n'existe pas alors pourquoi n'a-t-il pas été créé ?
Je teste d'ailleurs ces 2 cas en FSO :
si le répertoire existe, je le supprime, donc il n'existe pas
je crée le répertoire donc il est vide
si le répertoire existe j'ajoute un sous répertoire => erreur 58 !
parce que parmi 4.837 utilisateurs le problème s'est posé 2 fois mi juin et aujourd’hui.
Les utilisateurs qui ont rencontré ce problème ne l'ont pas signalé, je le sais parce que le logiciel envoie un rapport d'erreur, je ne pense pas qu'ils feront attention au message.
Je ne vois pas non plus ce que ces Dir pourraient apporter
soit le répertoire existe alors pourquoi n'a-t-il pas été supprimé ?
soit le répertoire n'existe pas alors pourquoi n'a-t-il pas été créé ?
Je teste d'ailleurs ces 2 cas en FSO :
si le répertoire existe, je le supprime, donc il n'existe pas
je crée le répertoire donc il est vide
si le répertoire existe j'ajoute un sous répertoire => erreur 58 !
Bonjour a tous,
Excusez l'incruste.
je le sais parce que le logiciel envoie un rapport d'erreur, je ne pense pas qu'ils feront attention au message.
Modifiez le rapport d'erreur en le complétant des infos sur le fichier en cause
parce que parmi 4.837 utilisateurs
Ben oui, mais soit vous résolvez l'erreur, soit vous la traitez.
yg_be et pijku vous ont donne des pistes
Les deux PC qui vous embêtent sont différents en quoi par rapport au autres?
Dans le code que vous montrez le programme s'arrête !
Le rapport d'erreur arrive par miracle?
Excusez l'incruste.
je le sais parce que le logiciel envoie un rapport d'erreur, je ne pense pas qu'ils feront attention au message.
Modifiez le rapport d'erreur en le complétant des infos sur le fichier en cause
parce que parmi 4.837 utilisateurs
Ben oui, mais soit vous résolvez l'erreur, soit vous la traitez.
yg_be et pijku vous ont donne des pistes
Les deux PC qui vous embêtent sont différents en quoi par rapport au autres?
Dans le code que vous montrez le programme s'arrête !
Le rapport d'erreur arrive par miracle?
Bonjour,
Je n'ai aucune idée des PC utilisés.
En car d'erreur un
Il est possible d'ajouter des infos dans ce fichier en créant une nouvelle version du logiciel.
J'ai essayé avec ma version de test alors que tous les répertoires sont bien créés

Je n'ai aucune idée des PC utilisés.
En car d'erreur un
on error gotoappelle une Sub qui envoie un fichier sur le serveur.
Il est possible d'ajouter des infos dans ce fichier en créant une nouvelle version du logiciel.
J'ai essayé avec ma version de test alors que tous les répertoires sont bien créés

MsgBox Dir(App.Path & "\Templates\")donne un message vide !
Re,
Tout a fait Thierry, vous voulez lister des repertoires, pas des fichiers.
a voir:
http://boisgontierjacques.free.fr/fichiers/ArborescenceRepertoireSousRep.xls
Tout a fait Thierry, vous voulez lister des repertoires, pas des fichiers.
a voir:
http://boisgontierjacques.free.fr/fichiers/ArborescenceRepertoireSousRep.xls
comment détermines-tu à quelle instruction l'erreur s'est produite?
comment se termine le traitement de l'erreur?
Msgbox + envoi d'un ficher sur le serveur puis
pourquoi ne pas utiliser FolderExists() au lieu de dir()?
Je n'utilise pas Dir, j'utilise .Folderexists, voir mon code ici https://forums.commentcamarche.net/forum/affich-36712177-vb6-fso-createfolder-erreur-58-already-exists-alors-qu-il-n-existe-pas?utm_source=ccm&utm_campaign=newAnswer&utm_medium=mail#8
J'ai essayé ce que Pijaku préconise ici https://forums.commentcamarche.net/forum/affich-36712177-vb6-fso-createfolder-erreur-58-already-exists-alors-qu-il-n-existe-pas?utm_source=ccm&utm_campaign=newAnswer&utm_medium=mail#6
as-tu envisagé, en cas d'erreur, d'attendre et de réessayer?
Pour attendre il faut qu'un évènement indique que l'attente est terminée sinon on boucle : attendre quoi ?
Erl
comment se termine le traitement de l'erreur?
Msgbox + envoi d'un ficher sur le serveur puis
end
pourquoi ne pas utiliser FolderExists() au lieu de dir()?
Je n'utilise pas Dir, j'utilise .Folderexists, voir mon code ici https://forums.commentcamarche.net/forum/affich-36712177-vb6-fso-createfolder-erreur-58-already-exists-alors-qu-il-n-existe-pas?utm_source=ccm&utm_campaign=newAnswer&utm_medium=mail#8
J'ai essayé ce que Pijaku préconise ici https://forums.commentcamarche.net/forum/affich-36712177-vb6-fso-createfolder-erreur-58-already-exists-alors-qu-il-n-existe-pas?utm_source=ccm&utm_campaign=newAnswer&utm_medium=mail#6
as-tu envisagé, en cas d'erreur, d'attendre et de réessayer?
Pour attendre il faut qu'un évènement indique que l'attente est terminée sinon on boucle : attendre quoi ?