Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Droits d'écriture

5 réponses
Avatar
Lucas Levrel
[Cross-post fclc++ et fco.ms-windows.programmation, suivi à votre bon
plaisir !]

Bonjour,

Mon programme, écrit en C++, sauve des données dans un fichier spécifié
par l'utilisateur. Le choix se fait avec le sélecteur de fichier GTK, qui
retourne le nom de fichier dans une « C-string ». Puis je fais :
ofstream journal(filename);
journal<<session.str();
journal.close();

Quand je teste (sous XP) le programme, qui est dans le répertoire
Téléchargements, le dossier par défaut du sélecteur est Téléchargements,
et là, impossible de créer un fichier (aucun fichier n'est créé dans le
répertoire à l'issue des instructions ci-dessus). En revanche, ça marche
dans le répertoire Bureau (c'est-à-dire, l'exécutable est dans
Téléchargements et l'utilisateur « navigue » jusqu'au répertoire Bureau
dans le sélecteur).

Mes questions :

- Est-ce un problème de permissions ? Ça me paraît étrange qu'un
utilisateur ne puisse pas créer un fichier dans ce répertoire !

- Dans mon code, que rajouter comme tests pour traquer l'erreur ?

- Des idées de la cause du problème, si ce ne sont pas les permissions ?

Merci.

--
LL

5 réponses

Avatar
Olivier Miakinen
Bonjour,

Le 30/03/2012 17:11, Lucas Levrel a écrit :
[Cross-post fclc++ et fco.ms-windows.programmation, suivi à votre bon
plaisir !]



Je laisse le crosspost car je ne sais pas quel sera le meilleur groupe
pour la suite.

[...]

Quand je teste (sous XP) le programme, qui est dans le répertoire
Téléchargements [...] impossible de créer un fichier [...]
En revanche, ça marche dans le répertoire Bureau

Mes questions :

- Est-ce un problème de permissions ? Ça me paraît étrange qu'un
utilisateur ne puisse pas créer un fichier dans ce répertoire !



Je ne sais pas.

- Dans mon code, que rajouter comme tests pour traquer l'erreur ?



Non plus.

- Des idées de la cause du problème, si ce ne sont pas les permissions ?



À tout hasard : la présence de deux caractères non ASCII dans le nom
« Téléchargements », et aucun dans le nom « Bureau » ? Je ne sais pas
si ça peut vraiment jouer, mais c'est une piste possible.
Avatar
Yann Renard
On 03/30/2012 06:19 PM, Olivier Miakinen wrote:
Bonjour,

Le 30/03/2012 17:11, Lucas Levrel a écrit :
[Cross-post fclc++ et fco.ms-windows.programmation, suivi à votre bon
plaisir !]



Je laisse le crosspost car je ne sais pas quel sera le meilleur groupe
pour la suite.

[...]

Quand je teste (sous XP) le programme, qui est dans le répertoire
Téléchargements [...] impossible de créer un fichier [...]
En revanche, ça marche dans le répertoire Bureau

Mes questions :

- Est-ce un problème de permissions ? Ça me paraît étrange qu'un
utilisateur ne puisse pas créer un fichier dans ce répertoire !



Je ne sais pas.

- Dans mon code, que rajouter comme tests pour traquer l'erreur ?



Non plus.

- Des idées de la cause du problème, si ce ne sont pas les permissions ?



À tout hasard : la présence de deux caractères non ASCII dans le nom
« Téléchargements », et aucun dans le nom « Bureau » ? Je ne sais pas
si ça peut vraiment jouer, mais c'est une piste possible.



C'est exact, GTK encore ses chaînes de caractères en UTF8

Yann
Avatar
Lucas Levrel
Le 31 mars 2012, Yann Renard a écrit :

On 03/30/2012 06:19 PM, Olivier Miakinen wrote:
À tout hasard : la présence de deux caractères non ASCII dans le nom
« Téléchargements », et aucun dans le nom « Bureau » ? Je ne sais pas
si ça peut vraiment jouer, mais c'est une piste possible.



C'est exact, GTK encore ses chaînes de caractères en UTF8



Merci. J'ai donc deux pistes à explorer :
- déterminer l'encodage utilisé par l'OS et convertir le nom de fichier
dans cet encodage ;
- utiliser la bibli gio pour ouvrir le fichier.

Je vais me pencher moi-même sur la seconde, mais si vous savez comment
aborder la première, je suis preneur !

--
LL
Avatar
Laurent Georget - slrn
On Sat, 31 Mar 2012 15:02:15 +0200, Lucas Levrel wrote :
Le 31 mars 2012, Yann Renard a écrit :

On 03/30/2012 06:19 PM, Olivier Miakinen wrote:
À tout hasard : la présence de deux caractères non ASCII dans le nom
« Téléchargements », et aucun dans le nom « Bureau » ? Je ne sais pas
si ça peut vraiment jouer, mais c'est une piste possible.



C'est exact, GTK encore ses chaînes de caractères en UTF8



Merci. J'ai donc deux pistes à explorer :
- déterminer l'encodage utilisé par l'OS et convertir le nom de fichier
dans cet encodage ;
- utiliser la bibli gio pour ouvrir le fichier.

Je vais me pencher moi-même sur la seconde, mais si vous savez comment
aborder la première, je suis preneur !




S'il s'agit de Windows (XP et supérieur en tout cas), c'est l'encodage
Latin-1 (aka ISO-8859-1) qui est utilisé (pour les PCs vendus en France
en tous cas ; je suppose qu'ils s'adaptent). Le monde Unix et ses
bibliothèques ont par contre majoritairement adopté l'UTF-8.
Avatar
Lucas Levrel
Le 16 avril 2012, Laurent Georget - slrn a écrit :

On Sat, 31 Mar 2012 15:02:15 +0200, Lucas Levrel wrote :
- déterminer l'encodage utilisé par l'OS et convertir le nom de fichier
dans cet encodage ;



S'il s'agit de Windows (XP et supérieur en tout cas), c'est l'encodage
Latin-1 (aka ISO-8859-1) qui est utilisé (pour les PCs vendus en France
en tous cas ; je suppose qu'ils s'adaptent). Le monde Unix et ses
bibliothèques ont par contre majoritairement adopté l'UTF-8.



Voilà. Ma question était donc de déterminer l'encodage de l'OS à
l'exécution. Ceci dit, pour mon problème particulier, j'ai suivi ma
deuxième piste (utiliser la bibliothèque GIO) et ça marche bien.
--
LL