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.
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
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
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
Bureau : Win10 64bits
Maison : Macbook Pro M3 16" SSD 512 Go / Ram 24 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go