Je rebondis sur le sujet ...
Répertoire courant ......
**************************************************
Pour bien expliquer et comprendre j'ai crée un répertoire spécifique Pure Basic qui est "C:\0 0 PureBasic\".
Dans ce répertoire crée des répertoires pour recevoir tout ce que je glane sur Pure Basic.... et aussi j'y installe les différentes version qui deviennent :
"C:\0 0 PureBasic\PureBasic394 Forme Brute\PureBasic c'est ici que ce trouve PB 3.94..
"C:\0 01 Pure Basic\PureBasic410 Forme Brute\PureBasic c'est ici que ce trouve PB 4.10..
"C:\0 01 Pure Basic\PureBasic420 Forme Brute\PureBasic ... PB 4.20..
Et enfin : "C:\0 01 Pure Basic\PureBasic430 Forme Brute\PureBasic PB 4.30.Béta 4
-----------------------------------------------------------------
Execption pour la version avec laquelle je travaille principalement actuellement la 4.2 qui à comme répertoire la forme suivante :
C:\0 0 PureBasic\PureBasic >>>>> qui est la base des répertoires attaché à PB. actif et en cours...
-----------------------------------------------------------------
Cette forme devrait me permettre de passer d'une à l'autre sans problème voir même d"en lancer deux différentes dans deux fenêtres différentes... Comme je l'évoque sur un grand écran comme certains
Mais pour cela il faudrait que chaque version dans fenêtre considère SON répertoire de lancement comme étant SA base de travail...
Ce qui n'est pas le cas, car tous font référence à un moment ou un autre aux indications qui ont été placé par la dernière installation soit dans :
"C:\Documents and Settings\HP_Administrateur\Application Data\PureBasic" et au fichiers "*.pref" qui s'y trouvent.
Et les forme de savoir ou on est ci dessous renvois toutes ce que ce fichier "*.prefs" raconte... Excepté la
librairie de Gnozal et plus particlièrement : PureFILE_GetExePath() de la librairie PureFILE1 ou 2 ?
-----------------------------------------------------------------
Pour confirmer cela j'ai crée un répertoire "C:\00 Budget 01" dans lequel j'ai placé ce petit test ci-dessous de même qu'il existe dans tout les répertoires cité ci-dessus. (en haut) Alors que mon répertoire de travail normal est :
"C:\0 01 Pure Basic\PureBasic\0 0 0 Partie strictement personnelle\0 0 0 Base Travail en cours\0 Aplication Principale BUDGET\"
Lorsque j'éxecute ce programme ci dessous dans chaque répertoire il me rend invariablement :
"C:\0 01 Pure Basic\PureBasic\0 0 0 Partie strictement personnelle\0 0 0 Base Travail en cours\0 Aplication Principale BUDGET\" Sauf PureFILE_GetExePath() qui me donne chaque fois le répertoire ou il se trouve et même "C:\00 Budget 01" quand il s'y trouve pendant que les autre restent sur leurs positions....
SAUF si on change l'option du répertoire de base dans "Options du compilateur" et
"Compiler/exécuter" le répertoire courant.
Mais attention, si l'on a une deuxième fenêtre ouverte, et qu'on la lance alors qu'elle pointe vers un autre répertoire courant Et lorsqu'on revient dans la première fenêtre il faut rechanger les option du compilateur...
Ce qui N'EST PAS LE CAS AVEC la fonction Gnozal ???? La raison est toujours cette référence unique dans "C:\Documents and Settings\HP_A....etc"
------------------------------------------------------------------------------------
Donc je maintient donc que quand une version PB est installé dans un répertoire avec tout ses sous répertoires et ce qu'on lui adjoint, ses librairies, plugins etc...
Il
Doit-être totalement indépendant des autres versions
en ne référents qu'au répertoire ou il a été installé. ET DONC !
Ce qui permet de voyager n'importe ou dans ses répertoires et de charger n'importe qu'elle source (pb) ou qu'elle se trouve, la faire fonctionner là !
ET QUE pour cela "le GetCurrentDirectory()" DOIT rendre l'endroit ou l'exécution se produit COMME
PureFILE_GetExePath() (jusque version 4.2) tout comme
son nom le dit "CURRENT" et non pas un endroit ou il aurait été initialiser on ne sait ou comme c'est le cas maintenant.
Pour tester plusieurs forme d'appel : Et changer de répertoire sans modifier quoi que ce soit...
Code : Tout sélectionner
; ***********************************************************
; Cette procedure donne le répertoire ou se trouve le programme qui l'appelle (de je ne sais plus qui ) *
; Cela tant sous Windows que sous Linux. Mais il y a une commande de PB V4.. qui fait de même *
; ***********************************************************
Procedure.s MyGetCurrentDirectory()
currentdir.s = Space(255) ; <- 255 is defined as #MAX_PATH in Window, not Linux, oh well.
CompilerIf #PB_Compiler_OS = #PB_OS_Linux ; Linux...
getcwd_(@currendir, 255)
If Right(currentdir, 1) <>"/" : currentdir + "/" : EndIf
CompilerElse ; Windows...
GetCurrentDirectory_(255, @currentdir)
If Right(currentdir,1)<>"\" : currentdir + "\" : EndIf
CompilerEndIf
ProcedureReturn currentdir
EndProcedure
;
Debug "Par appel API : "+MyGetCurrentDirectory()
;
Resultat$ = GetCurrentDirectory()
Debug "Par Get PB : "+Resultat$
Debug "++++++++++++++++++++++++++"
; Donne le chemin courrant du prg
ProgramDirectory.s = Space ( #MAX_PATH )
GetCurrentDirectory_ ( #MAX_PATH , ProgramDirectory)
Debug "Forme Dobro = "+ProgramDirectory + "\"
; -------------------------------------------------------------
Debug "********************************"
Debug "Forme Gnozal = "+PureFILE_GetExePath() ;
; ==============================