Bonjour,
j'ai inclus dans un fichier ressource de mon projet, 3 fichiers liés à Hunspell :
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.
Lorsqu'un utilisateur ajoute des mots dans son dictionnaire, le code initial est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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"); [...] }
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 [...]
J'ai modifié le code ainsi.
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 ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 [...]
Cordialement. AD.
Partager