Voilà j'ai un problème et impossible de trouver une solution.
Je voudrais savoir si un fichier est en lecture seule, car si j'essaye d'ouvrir un fichier ne lecture seule avec la fonction
file_text_open_append(f) ou avec la fonction
file_text_open_write(file), Game Maker m'affiche un joli message d'erreur qui me dit que le fichier ne peut pas être ouvert en mode écriture (ce qui est normal car le fichier est en lecture seule).
Je veut savoir si le fichier est lecture seule car ainsi je peut annuler l'ouverture du fichier plutôt que de laisser le message d'erreur de GM.
J'avais cru avoir trouvé la solution avec la fonction:
- Citation :
- file_find_first(mask,attr) Retourne le nom du premier fichier satisfaisant le filtre mask et les attributs attr. Une chaîne vide sera retournée si la recherche n'a pas abouti. Le filtre mask peut contenir le nom d'un chemin mais aussi des caractères jokers comme par exemple 'C:\temp\*.doc'. Les attributs vous permettent de fournir les fichiers supplémentaires que vous souhaitez voir (les fichiers 'normaux' seront toujours retournés s'ils satisfont le masque). Vous pouvez utiliser les constantes suivantes afin de rechercher le type de fichiers souhaité :
fa_readonly fichiers en lecture seule
fa_hidden fichiers cachés
fa_sysfile fichiers systèmes
fa_volumeid fichier d'id de volumes
fa_directory répertoires
fa_archive fichiers archives
J'ai donc écrit cela pour savoir si le fichier
fichier.txt est en lecture seule:
- Code:
-
//lectures seule ?
etat=file_find_first("fichier.txt",fa_readonly);
if etat!="" {show_message("Probleme !");; file_find_close(); exit; }
file_find_close();
Problème ! Que le fichier soit en lecture seule ou non, le message
"Probleme !" est affiché.
Mais voilà, dans l'explication de la fonction il y écrit <<
les fichiers 'normaux' seront toujours retournés s'ils satisfont le masque>>.
Or, à quoi servent les attributs si même les fichiers qui ne satisfont pas cette attribut sont comme même retournés ?
J'avais penser pour pallier se problème d'utiliser d'utiliser un fichier
batch (un fichier contenant des commandes MS-DOS) pour retirer la lecture seule. Si j'utilise cette solution, le fichier batch contiendras:
- Code:
-
attrib -R fichier.txt
exit
Et j’exécuterais le fichier batch avec la fonction
execute_program("FichierBatch.cmd","",true).
Mais le problème de cette solution est que ce n'est pas très propre (une boite MS-DOS s'afficheras à l'écran) et qu'il me seras impossible de vérifier si l'opération a réussie.
Merci d'avance pour les solutions que vous pourriez m'apporter.