J'ai bien précisé que mon application fonctionne très bien (depuis plus de 8 mois), je n'ai donc pas besoin de tester l'existence du dossier Chemin$ puisque je n'ai aucun problème de ce côté là. Il semble que tu n'as pas bien compris mon problème.
Il me semble que tu n'as pas bien lui ma réponse jusqu'au bout, ni compris qu'
un lien ne fonctionne pas comme le lancement direct d'un fichier
Si tu veux utiliser GetCurrentDirectory() depuis un programme lancé par un lien, il faut que ce lien contienne bien le chemin de démarrage (WorkingDirectory) "Démarrer dans:"
C'est exactement ce que t'a expliqué Falsam ensuite en te faisant ajouter WorkDirectory
Global Application.s, LinkFileName.s, LinkName.s, WorkDirectory.s
Il manquait le dossier d'exécution de l'application.
En faisant un Debug pour afficher le chemin en cours,
tu aurais tout de suite vu que ton programme se lançait bien, mais le chemin "en cours" n'était pas forcément celui de l'exe
Regarde les propriétés d'un lien sur le bureau par exemple, il y a
- Cible:
-
Démarrer dans:
[edit] Si tu ne renseignes pas "Démarrer dans:" alors ton exe se lance bien, mais le programme ne change pas de répertoire pour la suite.
Si tu fais un raccourci par l'assistant Windows, alors il met en cible le répertoire de l'EXE, donc dans ton cas, cela fonctionnait, mais si tu créé ce lien toi-même, alors "Démarré dans" doit être renseigné
Quand tu renseignes ce champs, c'est comme si tu faisait un batch avec
- CD chemin
- programme
Cliquer sur un lien n'est pas la même chose que cliquer directement sur l'EXE
Quand tu clique sur un EXE (dans l'explorer ou le menu windows), Windows va implicitement changer le répertoire en cours pour toi, donc c'est normal que cela fonctionne.
Debug et le Visualiseur de variables sont des outils indispensables.
Ajoute ShowVariableViewer() dans ton programme et clique sur rafraichir dès que quelque chose te semble bizarre, tu verra ce que contiennent tes variables.
Ou alors, met un point d'arrêt à la fin du programme puis passes le curseur souris sur le code: tu verras en tooltip le contenu de chaque variable
D'ailleurs tu vois bien dans ton propre message d'erreur que ton programme tente d'ouvrir la base dans un sous répertoire du bureau (Desktop)
Ouverture c:users\MonPc\Desktop\Data\Client.db impossible !
Alors que tu indique que le dossier de donnée est dans un sous répertoire de d:\Pctrav\Pctrav.ex
d:\Pctrav\Pctrav.exe, j'ai donc 2 fichiers dans ce même dossier: (pctrav.exe + un sous-dossier nommé Data qui contient mes bases de
PS. Mais je dois quand même reconnaitre que Falsam explique toujours bien plus proprement