Page 1 sur 1
SetCurrentDirectory() - Remonter d'un dossier.
Publié : ven. 31/juil./2009 16:01
par Geo Trouvpatou
Salut.
Pour tester la présence d'un dossier obligatoire à côté de mon executable, je procède comme ceci :
Code : Tout sélectionner
;dossierDeDepart$ = GetCurrentDirectory()
dossierDatasExisteOuPas = SetCurrentDirectory("datas")
If dossierDatasExisteOuPas
; Si le dossier existe, on est dedans, donc il faut en ressortir.
SetCurrentDirectory("../") ; Avec windows pas de problème.
;SetCurrentDirectory(dossierDeDepart$) ; Même comme ça avec Linux ça ne fonctionne pas.
EndIf
If dossierDatasExisteOuPas
; On lance le programme
Else
; Attention le dossier "datas" n'existe pas, Oulala c'est grave.
EndIf
Le code fonctionne bien sous Windows mais je n'arrive pas à ressortir du dossier et me remettre à la racine sous Linux, même avec la technique que j'ai mis en commentaire dans mon code.
Peut-être avez-vous une meilleure solution pour tester l'existence d'un dossier ?
Bye.
Publié : ven. 31/juil./2009 17:48
par Geo Trouvpatou
Bizarre dans la doc on a :
SetCurrentDirectory(Repertoire$)
au lieu d'un :
resultat = SetCurrentDirectory(Repertoire$)
Et pourtant sous windows en faisant :
dossierDatasExisteOuPas = SetCurrentDirectory("datas")
dossierDatasExisteOuPas vaut bien 1 si le dossier existe et 0 s'il n'existe pas.
Mais sous Linux j'ai toujours 0.
Je suis étonné que cela ne renvoi pas de résultat ???
Je continue mes recherches.
Publié : ven. 31/juil./2009 17:55
par Geo Trouvpatou
Simplement pour préciser que SetCurrentDirectory("../") remonte bien d'un dossier aussi sous Linux, mais comme apparemment sous Linux dossierDatasExisteOuPas = SetCurrentDirectory("datas") renvoie toujours 0 même si le dossier existe, je n'entrais pas dans la condition :
Code : Tout sélectionner
If dossierDatasExisteOuPas
; Si le dossier existe, on est dedans, donc il faut en ressortir.
SetCurrentDirectory("../") ; Avec windows pas de problème.
EndIf
Donc le SetCurrentDirectory("../") n'étais pas effectué.
Mais alors comment vérifier que le dossier existe et qu'on est dedans ?????
Avec un Resultat$ = GetCurrentDirectory()
Et on vérifie que "datas" est dans la chaine Resultat$
Je n'ai que cette solution qui me trotte en tête.
Publié : ven. 31/juil./2009 18:10
par Geo Trouvpatou
Je viens de m'apercevoir que apparemment si le dossier existe, cela me renvoi 0 et si le dossier n'existe pas cela me renvoi -1
Je vais donc certainement jongler avec ça entre Windows et Linux
Dossier existe : Windows = 1 et Linux = 0
Dossier n'existe pas : Windows= 0 et Linux= -1
Publié : sam. 01/août/2009 9:25
par venom
salut Geo Trouvpatou,
je vais peut être dire une bêtise mais en te servant de
OSVersion() tu peut te permettre de créer 2 procédures comme sa avec 1 seul exécutable tu peut le compiler sur les 2 OS
fin c'est a tester mais bon voila l'idée qui m'est venu en premier
@++
Publié : sam. 01/août/2009 12:29
par Geo Trouvpatou
Salut Venom.
Je sais, puisque mon 1er gros soft fini à 99.99% (Client FTP pour envoyer un script perso) tourne à 100% sur Windows et Linux à partir d'un seul fichier.
Avec ce type de code :
Code : Tout sélectionner
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Windows
CompilerCase #PB_OS_Linux
CompilerEndSelect
Ce que j'ai voulu dire c'est que j'ai dû faire ça :
Code : Tout sélectionner
dossierDatasExisteOuPas = SetCurrentDirectory("datas")
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Windows
; Sous Windows si le dossier existe, dossierDatasExisteOuPas vaut 1, sinon cela vaut 0
If dossierDatasExisteOuPas
SetCurrentDirectory("../")
Open_Window_principale()
Else
MessageRequester("ATTENTION.", "Le programme ne peut pas démarrer.", #MB_ICONERROR)
End
EndIf
CompilerCase #PB_OS_Linux
; Sous Linux si le dossier existe, dossierDatasExisteOuPas vaut 0, sinon cela vaut -1
If dossierDatasExisteOuPas = 0
SetCurrentDirectory("../")
Open_Window_principale()
Else
MessageRequester("ATTENTION.", "Le programme ne peut pas démarrer.", #PB_MessageRequester_Ok)
End
EndIf
CompilerEndSelect
Regardes mes commentaires.
Bye.
Publié : sam. 01/août/2009 15:49
par venom
oui j'ai compris la valeur renvoyé est différente d'un OS a un autre.
@++