Page 1 sur 1

[Résolu] Répertoires et mac os x Lion

Publié : jeu. 17/nov./2011 6:36
par DjPoke
Bonjour,

J'ai un problème qui semble être lié à mac os x Lion :
GetCurrentDirectory() me renvoie un / tout seul au lieu de me renvoyer le répertoire de l'application.
Du coup, je ne peux charger d'images via LoadImage.

Une idée de ce que je peux faire, s.v.p ?
Merci

EDIT:
Bon ben finalement j'ai utilisé CatchImage, et ça, ça fonctionne mieux.

Re: Répertoires et mac os x Lion

Publié : mar. 22/nov./2011 13:30
par gnozal
DjPoke a écrit :J'ai un problème qui semble être lié à mac os x Lion :
GetCurrentDirectory() me renvoie un / tout seul au lieu de me renvoyer le répertoire de l'application.
Bonjour,

je n'ai pas de mac, mais :

- GetCurrentDirectory() ne renvoie pas le répertoire de l'application, mais le répertoire courant (comme son nom l'indique).

- ProgramFilename() renvoie le nom de l'exécutable, y compris le chemin. Il reste à faire GetPathPart() pour obtenir le répertoire de l'application.

Re: Répertoires et mac os x Lion

Publié : lun. 28/nov./2011 2:31
par DjPoke
Merci gnozal, je vais tester de suite.

Edit :

Hélas, à mon avis c'est un probleme lié à OS X Lion.
GetCurrentDirectory()

Renvoie le chemin du répertoire courant de l'application. Tous les accès aux fichiers sont relatifs à ce répertoire quand un chemin absolu n'est pas spécifié. SetCurrentDirectory() peut être utilisé pour changer le répertoire courant.
Cette fonction renvoie une chaîne vide dans le cas très improbable d'un échec.
Mon programme est dans le répertoire "Documents/Mes Programmes" pour l'instant, et j'essaye de charger des images dans un dossier relatif à celui-ci.

Ce qui est étrange, c'est que cela marche quand je compile sous PB, mais dès que je crée un executable, il ne trouve plus le dossier.
Il me manque peut être une directive de compilation liée aux droits administrateur alors ?

ReEdit:

Problème résolu de la manière suivante pour mac os x :

Code : Tout sélectionner

currentdir$=GetCurrentDirectory()
dd$=GetPathPart(ProgramFilename())
If FindString(dd$,GetTemporaryDirectory(),1)=0
  SetCurrentDirectory(dd$)
  If LCase(Right(dd$,Len("contents/macos/")))="contents/macos/"
    SetCurrentDirectory("..")
    SetCurrentDirectory("..")
    SetCurrentDirectory("..")
    currentdir$=GetCurrentDirectory()   
  EndIf
EndIf
currentdir$ contient alors le répertoire de l'application pour mac os x.