Folder qui vient d'être créé n'existe pas !

Résolu
Herve_be Messages postés 1015 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 10 mars 2024 - Modifié le 16 nov. 2019 à 19:44
Herve_be Messages postés 1015 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 10 mars 2024 - 19 nov. 2019 à 12:26
Bonjour,
J'ai une erreur 76 (Path not found) en essayant de créer un fichier dans un répertoire que je viens de créer, voici mon code
Dim fPath As New FileSystemObject
TankFolder = App.Path & "\Log Book " & TankNr
If Not fPath.FolderExists(TankFolder) Then fPath.CreateFolder (TankFolder)
ParFileName = TankFolder & "\Data.par"
Open ParFileName For Output As #1

Je n'ai pas d'erreur sur .FolderExists ni sur .CreateFolder
je suppose donc que soit le folder existait, soit il a été créé
par contre j'ai une erreur 76 sur Open.

Il est possible que je n'aie pas la permission d'accéder à ce folder
mais alors pourquoi pas d'erreur sur .CreateFolder ?
Je n'ai pas trouvé comment je peux vérifier si .CreateFolder a réellement fonctionné.
Comment puis-je vérifier si j'ai accès avant d'essayer de créer le fichier ?

3 réponses

JeuDuTaquin Messages postés 249 Date d'inscription mardi 4 juillet 2017 Statut Membre Dernière intervention 31 mai 2023 7
17 nov. 2019 à 15:32
Salut Hervé,

Utilise plutôt MKDIR de la DLL VB, car les Anti-virus et autres privilèges administrateurs, n'aiment plus les appels exotiques au sein d'un même programme.

Testes avec cette fonction ou fait un appel de EXE avec le privilège Administrateur car si ton répertoire est en zone protégée (ProgramFiles), le système ignorera ta requête.

Sinon, te devra déplacer ton programme dans un autre répertoire, ce qui est moins cool !

Amuse-toi bien.
0
Herve_be Messages postés 1015 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 10 mars 2024 2
Modifié le 18 nov. 2019 à 14:24
Bonjour et merci pour l'info,
J'utilisais .CreateFolder parce que juste avant j'utilise .FolderExists il me semblait logique de rester en FSO.

Ceci dit chez moi tout fonctionne très bien mais certains utilisateurs installent le logiciel dans un répertoire déconseillé comme C:\Temp ou sur le bureau.
J'essaye de recréer ce genre de situation pour essayer de comprendre ce qui se passe afin d'y remédier.
Mais maintenant je n'y comprends plus rien !
Avec le .exe dans C:\Temp j'obtiens maintenant une erreur 424 (Un objet est requis) sur
If Not GetFile("VerCheck.par") Then ...
GetFile étant la fonction que j'ai indiquée tout au début
Si je place l'exe dans un autre répertoire ou si, dans C:\Temp je le démarre en tant qu'administrateur je n'ai pas d'erreur.
Je pensais que l'erreur 424 était due à un appel avec un paramètre qui ne respecte pas le type non ?
Qu'est-ce que ça a à voir ?
Et surtout comment faire savoir à l'utilisateur que s'il rencontre des problèmes c'est parce que le .exe se trouve dans un répertoire inadéquat ?
0
Herve_be Messages postés 1015 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 10 mars 2024 2
19 nov. 2019 à 12:26
J'ai trouvé !
L'erreur qui se produit est bien 75 = Path acces error ce qui active la gestion d'erreur
Dans la routine de gestion d'erreur j'ai écrit Appp.Path au lieu de App.Path
du coup une autre erreur 424 (Un objet est requis) se produit et c'est celle là qu'on voit et non 75.
0
Rejoignez-nous