l'erreur vient de la fct openini, il faut remplacer :
"sizeof(valeur)" par "100" si tu passe un char de taille 100, la fonction initiale demande à lire la taille d'un pointeur de char et non la place alloué pour le pointeur de char.
Je ne sais pas si ce que j'écris est compréhensible et juste ....... mais je me comprends ....
ben je te souhaite bon courage pr modifier la copie du fichier sans le charger en mémoire, et puis si ton prog plante pdt les manips, tu n'auras pas l'occasion d'effacer la copie et elle restera bêtement là, sur le dd :/
merci du commentaire mais je pense pas un jour passez sous linux :P
sinon , au lieu de tout mettre en mémoire , il est à mon avis plus facile de copier le fichier et de lire la copie (à la fin , on pourra remplacer l'originial par la copie ) .
pr des codes comme ça, autant écrire une classe de gestion portable plutôt que de se reposer sur l'API windows, parce que qd tu voudras passer sous linux (ça risque d'arriver), tu devras refaire tout le travail.
je te propose un système comme ceci:
- la classe peut ouvrir un fichier ini ou en créer un nouveau
la classe charge toutes les données du INI en mémoire (ton INI fera pas 10Mo je suppose, sinon c pas une bonne idée) et tu fournis des méthodes pour pvr les lire/altérer (ajouter et enlever des sections entières, des clefs...)
- une méthode pour sauver le tout.
l'idée c'est donc de faire les modifs en mémoire et de n'effectuer la sauvegarde fichier qu'à un moment stratégique. ça évite les requêtes incessantes sur le DD et puis surtout, c plus facile de modifier les données en mémoire que dans un fstream.
en fait j'ai fait les fonctions pour un de mes prog et après je me suis dit que ça pourrais servir à qqun .
J'avoue , jai pas regardé s'il existait déjà d'autres sources ...
l'erreur vient de la fct openini, il faut remplacer :
"sizeof(valeur)" par "100" si tu passe un char de taille 100, la fonction initiale demande à lire la taille d'un pointeur de char et non la place alloué pour le pointeur de char.
Je ne sais pas si ce que j'écris est compréhensible et juste ....... mais je me comprends ....
dsl d'arriver 2 ans plus tard
Il ne faut pas utiliser de pointeur mais un tableau!
Ceci ne marche pas:
//(param est la chaine de caractères dans laquelle tu vas stocker la valeur.)
char* param = new char[100];
Mais ceci oui:
char param[100];
ex :
fichier ini :
[test]
test=123456
et qd je fais lire une clé (pour la section test et la clé test) :
la valeur est 123
Quelqu'un peut m'aider ?