[Résolu] GetCurrentDirectory() renvoi rien en exécutable

Archive.
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

[Résolu] GetCurrentDirectory() renvoi rien en exécutable

Message par Jacobus »

Un problème qui me surprend depuis deux jours je ne récupère plus le chemin des répertoires et autres avec GetCurrentDirectory()

Si je défini le dossier principal avec, tout fonctionne en mode debug mais pas en exécutable.

Code : Tout sélectionner

Global DIR$
DIR$ = GetCurrentDirectory()
If FileSize(DIR$+"Mon dossier")=-1
 CreateDirectory(DIR$+"Mon dossier"):EndIf
Ce code une fois compilé en exe me crée le dossier sur le bureau!!
Si je l'utilise pour ouvrir un fichier, il ne le trouve pas. Une idée?
Dernière modification par Jacobus le mer. 23/mai/2007 10:56, modifié 1 fois.
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
KarLKoX
Messages : 1191
Inscription : jeu. 26/févr./2004 15:36
Localisation : France
Contact :

Message par KarLKoX »

Code : Tout sélectionner

curdir.s = Space(#MAX_PATH)
GetModuleFileName_(GetModuleHandle_(0), @curdir, #MAX_PATH)
Fonctionnera à coup sûr, ce n'est pas un problème de PB mais de processus dans un contexte donné (debug = module différent).
"Qui baise trop bouffe un poil." P. Desproges
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

Merci KarlKoX, on va adopter cette formule par sécurité.

Mais j'ai trouvé l'origine de mon problème qui survenait en créant une icône de raccourci via un installeur. Car en lançant l'appli depuis le dossier où elle est, pas de problème. Lors de la création de l'icône à l'install, le chemin "Démarrer dans" disponible dans les propriétés de l'icône, n'était pas inscrit. D'où l'usage du bureau par défaut et les em***des qui en découlent...

Deux jours :roll: que je cherche cette co****ie ! deux jours que je debugge dans tous les sens pour rien et que j'aurai dû mettre en ligne ma suite, AARRHH!! je suis furax, mais à un point!!
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

Fais un :

Code : Tout sélectionner

MessageRequester("", GetCurrentDirectory(), 0)
Car t'as peut-être un pb de "/" ou "\"

:wink:
Lio
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

Je te remercie Lio, mais c'est la première chose que j'ai testé, le retour de GetCurrentDirectory() et qui me donne bien le chemin du répertoire courant. Le plus surprenant est qu'avec le code de KarlKoX je parviens a extraire le même chemin mais ainsi il est parfaitement pris en compte par le programme, ce qui n'est pas le cas autrement. j'avoue que c'est curieux et que cela me pose quelques soucis... à suivre.
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
KarLKoX
Messages : 1191
Inscription : jeu. 26/févr./2004 15:36
Localisation : France
Contact :

Message par KarLKoX »

Le bureau est un dossier spécial qui change le module appelant, c'est à dire que ton programme est lancé par un autre processus et c'est son module qui est pris en compte et donc, son chemin.
Ceci explique pourquoi ton dossier est créé sur le chemin de celui ci, à savoir, sur le bureau ;)
Une autre astuce consiste à créer une clé dans la bdr lors de l'installation de ton programme (ou du premier lancement) et de faire un SetCurrentDirectory_(lpPath.s) au tout début de ton code.
"Qui baise trop bouffe un poil." P. Desproges
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

Merci de ces lumières, je comprend mieux la chose maintenant. Pour l'icône de raccourci j'ai choisi l'option de la créer au premier lancement du programme dans le programme avec les paramètres nécessaires, et je ne la propose plus dans l'installeur. Ca fonctionne correctement.

Par contre cela soulève d'autres questions et je crois qu'il faut que je revois certains paramètres, notamment avec RunProgram() qui pourrait poser quelques problèmes du même style, notamment avec les threads. Par exemple en démarrant plusieurs applis qui elles mêmes utilisent des threads.
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
Répondre