2010-06-16 21 views
1

J'ai un tas de code Realbasic qui a été écrit sur un Mac que je suis supposé porter sur Windows. En ce moment, essayons simplement de lancer le programme depuis REAL Studio. GetFolderItem ("") renvoie le dossier dans lequel se trouve l'application. Child ("A") renvoie un autre FolderItem comme je l'attendrais. Mais quand j'appelle Child ("B") sur A, il retourne un FolderItem avec False défini pour la propriété Directory. Mais B est un dossier sur mon Windows! Alors maintenant ça ne me laissera pas avoir un Enfant de B, ça revient juste à zéro. Ce code a bien fonctionné sur MacOSX. Aucune suggestion?REALBasic Child FolderItem doit également être un répertoire

Merci à l'avance, Me

Répondre

2

Je suppose que vous n'êtes pas dans le répertoire que vous pensez que vous êtes. Essayez de regarder le chemin dans le débogueur pour voir si le débogueur regarde dans le même endroit que vous êtes.

Il s'agit d'un problème courant lorsque vous traitez avec Mac vs Windows dans RB. Sur le Mac, beaucoup de choses sont placées dans le dossier bundle de sorte qu'il n'y a pas de fichiers/répertoires externes et puisque Windows n'a pas d'équivalent, les gens sont confus quant à leur chemin.

BTW, vous n'avez pas Vous devez d'abord utiliser GetFolderItem (""). Vous pouvez simplement utiliser GetFolderItem ("A") parce que vous avez par défaut le répertoire dans lequel se trouve l'application.

+0

Je l'ai compris une seconde après l'avoir posté. Mais bon pour BKeeney d'avoir raison. Je pensais que j'étais dans le dossier dans lequel se trouvait le fichier RealBasicProject. Dans mon débogage hâtif, je n'avais pas réalisé que j'étais dans un dossier de débogage temporairement créé qui avait disparu après le débogage. – Brad

+0

Erreur commune que j'ai fait beaucoup de fois moi-même. ;) –

0

Souvent, je préfère utiliser ce code. Cela s'explique beaucoup et évite cette erreur commune.

dim base as folderitem = App.ExecutableFile.Parent 

#if DebugBuild = true then 
base = App.ExecutableFile.Parent.Parent 
#endif 

dim target as folderitem = base.Child("A").Child("B") 

Vous pouvez également le mettre dans une fonction à réutiliser.