1 pièce(s) jointe(s)
Ressource et permissions de fichier
Bonjour,
j'ai inclus dans un fichier ressource de mon projet, 3 fichiers liés à Hunspell :
Pièce jointe 223218
fr_FR.* ne sont ouverts qu'en lecture seule.
usrDict.txt est copié en xxDict.txt (xx étant les initiales de l'utilisateur). C'est le dictionnaire perso de l'utilisateur xx. le fichier usrDict.txt contient initialement la ponctuation qui ne figure pas dans fr_FR.
Code:
1 2 3 4 5 6
| QFile *mFileUsr;
mFileUsr = new QFile(gDirDico+QDir::separator()+gUSabrv+"Dict.txt");
if (! mFileUsr->exists()) {
QFile::copy(":/dico/dictionary/usrDict.txt", gDirDico+QDir::separator()+gUSabrv.toLower()+"Dict.txt");
[...]
} |
Lorsqu'un utilisateur ajoute des mots dans son dictionnaire, le code initial est :
Code:
1 2 3 4 5 6 7 8 9
| if(!_userDictionary.isEmpty()) {
QFile userDictonaryFile(_userDictionary);
if (userDictonaryFile.open(QIODevice::Append)) {
QTextStream stream(&userDictonaryFile);
stream << word << "\n";
userDictonaryFile.close();
}
else
[...] |
A chaque utilisation de cette portion de code, j'ai une erreur (ie on passe par else). Pour une raison que j'ignore l'attribut du fichier copié est en lecture seule !? alors que le fichier original ne l'était pas évidemment.
J'ai modifié le code ainsi.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| if(!_userDictionary.isEmpty()) {
QFile userDictonaryFile(_userDictionary);
if(!userDictonaryFile.setPermissions(QFile::ReadOwner|QFile::WriteOwner|QFile::ExeOwner|QFile::ReadGroup|QFile::ExeGroup|QFile::ReadOther|QFile::ExeOther)) {
qDebug("Erreur");
return;
}
if(userDictonaryFile.open(QIODevice::Append)) {
QTextStream stream(&userDictonaryFile);
stream << word << "\n";
userDictonaryFile.close();
}
else
[...] |
J'avais peur de rencontrer éventuellement un problème d'encodage [les 3 fichiers sont encodés nativement en ANSI] mais je ne m'attendais pas à ce problème. C'est curieux, non ? Placer un fichier en ressource modifie ses attributs ? Pourquoi ?
Cordialement. AD.