Page 1 sur 1

Enregistrement fichier

Publié : ven. 19/mai/2023 13:42
par MetalOS
Salut les gars,

J’aurais besoin d'un petit coup de main. je cherche à charger un fichier texte et afficher sont contenus dans un EditorGadget. Jusque là pas de problème seulement si j'ajoute du texte et que je veut l'enregistrer et recharger le contenu du fichier je n'y arrive pas. Mon code recharge bien le contenus du fichier mais ma multiplié par 2 le contenus. Voici le code de mon bouton pour enregistrer dans le fichier. Merci d'avance pour votre aide.

Code : Tout sélectionner

       Case #Window_Button_Valider
            If OpenFile(1, "Fichier.txt", #PB_File_Append|#PB_UTF8) 
                Resultat$ = GetGadgetText(#Window_Editor)
                 ClearGadgetItems(#Window_Editor)
                 WriteString(1, Resultat$)
                   MessageRequester("Information:", "Les modifications du fichier ont bien été effectuées.", #PB_MessageRequester_Ok )
                CloseFile(1)
           Else
              MessageRequester("Information","Impossible de modifier le fichier!")
           EndIf 
            
           If OpenFile(0, "Fichier.txt") 
             ClearGadgetItems(#Window_Editor)
                While Eof(0) = 0 
                 Texte$ = ReadString(0) 
                AddGadgetItem(#Window_Editor, -1, Texte$) 
              Wend 
               CloseFile(0) 
             Else 
               MessageRequester("Information","Impossible d'ouvrir le fichier!") 
           EndIf   

Re: Enregistrement fichier

Publié : ven. 19/mai/2023 18:00
par Bmld76
Bonjour,

Ton extrait de code ne permet pas de l'exécuter pour faire des tests et t'aider rapidement. Poste un code mettant ton problème en évidence.

Re: Enregistrement fichier

Publié : ven. 19/mai/2023 18:12
par Ollivier
Essaie SetGadgetText() directement. Process :

1) voir la taille du fichier
2) allouer un tampon de la taille du fichier
3) charger avec ReadData()
4) faire un PeekS() pour passer du tampon à une chaîne
5) libérer le tampon (FreeMemory())
6) mettre la chaîne dans l'editorGadget avec SetGadgetText()
7) (pourquoi pas) supprimer la chaîne

Re: Enregistrement fichier

Publié : ven. 19/mai/2023 20:28
par Mindphazer
Si tu ouvres ton fichier avec OpenFile en mode append, tu vas ajouter le contenu de ton Editor à la fin du fichier.
Donc si tu ré-ouvres le fichier, que tu ajoutes du texte dans ton Editor, et que tu le ré-enregistres, ben ça va s'ajouter à la fin de ton fichier
Donc tu auras tout en double
Puis en triple
Etc...

Ouvre ton fichier en écriture avec CreateFile, comme ça, ça le vide à charge fois

Re: Enregistrement fichier

Publié : ven. 19/mai/2023 22:12
par Ollivier
Mindphazer a snipé. Dans le mille...

Re: Enregistrement fichier

Publié : ven. 19/mai/2023 22:56
par MetalOS
Merci de vos réponses les gars. Mindphazer à tous juste.