| Modification d'un fichier texte | |
|
|
Auteur | Message |
---|
Pringle Petit bavard
Messages : 55 Projet Actuel : Plusieurs projets... en pause quasi permanente
| Sujet: Modification d'un fichier texte Jeu 30 Avr 2009 - 21:55 | |
| :p_salut: Je ne sais pas s'il est possible de modifier une ligne précise d'un fichier texte, de supprimer une ligne ou sauter une ligne au milieu du fichier. (enfin pour la modification, j'ai trouvé un script bien utile, mais si jamais j'ai deux fois la même chaîne dans un fichier...) Si je demande ça, c'est qu'il me semble que file-text_open_write réécrit (donc écrase complètement) un fichier, et file_text_open_append écrit à la suite du fichier |
|
| |
nicoulas *Excellent utilisateur*
Messages : 6030 Localisation : Dordogne Projet Actuel : Croustaface Tower Defense
| Sujet: Re: Modification d'un fichier texte Jeu 30 Avr 2009 - 22:14 | |
| Le script (du lien donné) que j'ai fait remplace tous les caractères d'un fichier texte par un autre. Par exemple si tu as ça dans ton fichier : - Code:
-
Blablabla Si tu demandes de remplacer "a" en "b" ça remplacera tous les a en b et donc ça donnera - Code:
-
Blbblbblb Dans ce cas, les arguments du scripts seraient alors : file_text_replace_character("nom_du_fichier.txt","a","b"); Mais si j'ai bien compris ta question ce n'est pas ça que tu cherche donc je pense que mon script ne te sera pas utile. Pour modifier ce que tu veux, il est nécéssaire de lire toutes les données du fichier texte et de les stocker dans la RAM temporairement (dans une liste par exemple), puis de modifier ce que tu veux à partir de la RAM et enfin de tout réécrire dans ton fichier, car effectivement tu as raison pour les fonctions file_text_open_write() et file_text_open_append() |
|
| |
Pringle Petit bavard
Messages : 55 Projet Actuel : Plusieurs projets... en pause quasi permanente
| Sujet: Re: Modification d'un fichier texte Jeu 30 Avr 2009 - 22:22 | |
| Si si, ton script me sera sûrement utile Enfin pour modifier tout, j'avais déjà pensé à une solution barbare (lire le fichier A, tout enregistrer dans un fichier B, réécrire A avec la petite modification, et effacer B :lng: ), mais j'ai préféré demander pour savoir s'il existait une meilleure astuce Par contre qu'est-ce qu'une liste ? Et comment tu fais pour stocker un texte entier dans la RAM ? |
|
| |
nicoulas *Excellent utilisateur*
Messages : 6030 Localisation : Dordogne Projet Actuel : Croustaface Tower Defense
| Sujet: Re: Modification d'un fichier texte Jeu 30 Avr 2009 - 22:39 | |
| Justement la liste sert à stocker le texte dans la RAM. En fait, une liste est une structure de données qui fonctionne par lignes en quelque sorte, donc une ligne du texte sera stocké dans une ligne de la liste. Pour voir comment ça marche, réfère toi au manuel, les fonctions pour les listes sont du style ds_list_* |
|
| |
bibi675 Utilisateur confirmé: Rang *****
Messages : 2456 Localisation : Oise Projet Actuel : Jeu par navigateur original
| Sujet: Re: Modification d'un fichier texte Jeu 30 Avr 2009 - 22:42 | |
| Là, la liste ne sert à rien (et va même enregistrer le fichier dans le mauvais sens), un tableau est beaucoup plus adapté. |
|
| |
Pringle Petit bavard
Messages : 55 Projet Actuel : Plusieurs projets... en pause quasi permanente
| Sujet: Re: Modification d'un fichier texte Jeu 30 Avr 2009 - 22:43 | |
| L'aide de GM est assez claire, je vais tout de suite les essayer Sinon merci beaucoup pour tes réponses Edit : j'y pensais pas au tableau, mais c'est vrai que ça peut être une bonne idée aussi (enfin jusqu'à 32 000 lignes maximum mais bon ça devrait aller), merci bibi |
|
| |
bibi675 Utilisateur confirmé: Rang *****
Messages : 2456 Localisation : Oise Projet Actuel : Jeu par navigateur original
| Sujet: Re: Modification d'un fichier texte Jeu 30 Avr 2009 - 22:46 | |
| Bah des fichiers de plus de 32 000 lignes, y'en a pas des masses... Mais si c'est pour ton GMPaint sache que le binaire est plus compact. |
|
| |
Pringle Petit bavard
Messages : 55 Projet Actuel : Plusieurs projets... en pause quasi permanente
| Sujet: Re: Modification d'un fichier texte Jeu 30 Avr 2009 - 22:49 | |
| Non c'est pas pour GMPaint, mais peut-être pour un nouveau projet, un jeu cette fois, et les fichiers textes permettront de faire facilement des mises à jour/ajouts en tout genres...
Enfin faudrait aussi que j'avance GMPaint :gniah: |
|
| |
nicoulas *Excellent utilisateur*
Messages : 6030 Localisation : Dordogne Projet Actuel : Croustaface Tower Defense
| Sujet: Re: Modification d'un fichier texte Jeu 30 Avr 2009 - 22:52 | |
| - bibi675 a écrit:
- Là, la liste ne sert à rien (et va même enregistrer le fichier dans le mauvais sens), un tableau est beaucoup plus adapté.
C'est ce que j'utilise (une liste) pour le script dont il a posté le lien, et ça marche impec, ça n'inverse absolument pas l'ordre des lignes D'ailleurs, je vois pas en quoi un tableau est plus adapté ? |
|
| |
Pringle Petit bavard
Messages : 55 Projet Actuel : Plusieurs projets... en pause quasi permanente
| Sujet: Re: Modification d'un fichier texte Jeu 30 Avr 2009 - 22:54 | |
| Je pense que le tableau serait plus simple d'utilisation, mais la liste peut être effacée pour libérer la mémoire (je ne saurais pas effacer un tableau ou une variable quelconque) Enfin c'est ce que je pense, il y a peut-être d'autres explications qui m'échappent |
|
| |
bibi675 Utilisateur confirmé: Rang *****
Messages : 2456 Localisation : Oise Projet Actuel : Jeu par navigateur original
| Sujet: Re: Modification d'un fichier texte Jeu 30 Avr 2009 - 23:32 | |
| - nicoulas a écrit:
- bibi675 a écrit:
- Là, la liste ne sert à rien (et va même enregistrer le fichier dans le mauvais sens), un tableau est beaucoup plus adapté.
C'est ce que j'utilise (une liste) pour le script dont il a posté le lien, et ça marche impec, ça n'inverse absolument pas l'ordre des lignes D'ailleurs, je vois pas en quoi un tableau est plus adapté ? Bah ça dépend comme tu l'utilise ta liste, si c'est pour rajouter une ligne à la fin, autant prendre un tableau. Pour moi une liste ne sert qu'à ajouter une donnée en haut de la liste et à pousser les autres vers le bas. |
|
| |
nicoulas *Excellent utilisateur*
Messages : 6030 Localisation : Dordogne Projet Actuel : Croustaface Tower Defense
| Sujet: Re: Modification d'un fichier texte Jeu 30 Avr 2009 - 23:43 | |
| Héhé, les valeurs s'ajoutent par défaut à la fin de la liste, pas au début, d'ou l'intérêt dans ce cas. |
|
| |
bibi675 Utilisateur confirmé: Rang *****
Messages : 2456 Localisation : Oise Projet Actuel : Jeu par navigateur original
| Sujet: Re: Modification d'un fichier texte Ven 1 Mai 2009 - 0:05 | |
| Bah quelle différence avec un tableau alors ? |
|
| |
nicoulas *Excellent utilisateur*
Messages : 6030 Localisation : Dordogne Projet Actuel : Croustaface Tower Defense
| Sujet: Re: Modification d'un fichier texte Ven 1 Mai 2009 - 0:23 | |
| Tu as plus d'options de tri, donc par exemple si tu veux remonter la ligne 245 d'une ligne ce sera extrêmement simple (une ligne de code composée d'un appel de fonction ^^), puis tu peux aussi trier par ordre croissant, décroissant (si la liste est composée de nombres, mais je crois que ça marche aussi pour l'ordre alphabétique), après tu peux facilement insérer une ligne sans devoir tout modifier manuellement, et tu peux connaitre le nombre de lignes dans ta liste, et j'en passe ^^ Bref, c'est beaucoup plus simple (c'est comme la différence entre un tableau et les ds_grid : avec les ds_grid, tu as énormément plus d'options qu'avec un tableau 'classique'). |
|
| |
bibi675 Utilisateur confirmé: Rang *****
Messages : 2456 Localisation : Oise Projet Actuel : Jeu par navigateur original
| Sujet: Re: Modification d'un fichier texte Ven 1 Mai 2009 - 11:21 | |
| Ah ok, moi je me servais juste des listes pour insérer des valeurs en haut et pousser les autres. ^^
Mais niveau performances, un tableau normal doit être largement plus rapide, non ? |
|
| |
nicoulas *Excellent utilisateur*
Messages : 6030 Localisation : Dordogne Projet Actuel : Croustaface Tower Defense
| Sujet: Re: Modification d'un fichier texte Ven 1 Mai 2009 - 11:24 | |
| Pas sûr, j'avais fait des tests avec mon moteur de terrain 3D (pas avec des listes mais avec des ds_grid) et les tableaux étaient plus lents que les ds_grid alors y'a des chances que ce soit la même chose avec les ds_list. |
|
| |
bibi675 Utilisateur confirmé: Rang *****
Messages : 2456 Localisation : Oise Projet Actuel : Jeu par navigateur original
| Sujet: Re: Modification d'un fichier texte Ven 1 Mai 2009 - 11:33 | |
| Ah ok, je savais pas... Comme quoi on en apprend tous les jours. ^^ |
|
| |
Mass *Excellent utilisateur*
Messages : 3351 Localisation : Dans une canonnière wookie. Projet Actuel : Monter des trucs et des machins
| Sujet: Re: Modification d'un fichier texte Ven 1 Mai 2009 - 12:03 | |
| Arf c'est une bonne idée... Parce que mon Isometric RTS engine génère des fichiers de 60000 lignes par moment... Et pour modifier une partie j'utilisait les readln. Pas rapide. C'est limite, les listes ? |
|
| |
nicoulas *Excellent utilisateur*
Messages : 6030 Localisation : Dordogne Projet Actuel : Croustaface Tower Defense
| Sujet: Re: Modification d'un fichier texte Ven 1 Mai 2009 - 21:45 | |
| Tu voulais dire limité ? Si oui y'a qu'a vérifier dans le manuel :lng: |
|
| |
Mass *Excellent utilisateur*
Messages : 3351 Localisation : Dans une canonnière wookie. Projet Actuel : Monter des trucs et des machins
| Sujet: Re: Modification d'un fichier texte Ven 1 Mai 2009 - 23:33 | |
| oui, je voulais dire limité j'ai vérifié, y'en a apparament pas |
|
| |
glcraft Utilisateur confirmé: Rang *****
Messages : 1698 Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P Projet Actuel : Jeu de survie avancé
||--------
| Sujet: Re: Modification d'un fichier texte Sam 2 Mai 2009 - 13:49 | |
| c'est simple : //deja tu ouvre le fichier pour le lire ET pour ecrire, je supose que tu c'est le faire //ensuite line=file_text_read_string(textread) if not string_find(line,'le texte a trouver dans la ligne pour pouvoir la supprimer') { file_text_write_string(textwrite,line) file_text_writeln(textwrite) } file_text_readln(textread) c'est tout simple en fait, dès qu'il trouve un morceau de texte, il passe la ligne et réecrit le texte sans cette(ces) lignes(s) ou si tu veux passer la ligne 12 et 139 (par example) //pareil, tu ouvre le fichier pour le lire et pour ecrire //mais avant crée les variables nmbre_ligne et read_line //ensuite while (file_oef()) { nmbre_ligne+=1 } line=file_text_read_string(textread) if line_read!=12 || line_read!=138 { file_text_write_string(textwrite,line) file_text_writeln(textwrite) } line_read+=1 if line_read>=nmbre_ligne { file_text_close(textread) file_text_close(textwrite) } |
|
| |
Contenu sponsorisé
| Sujet: Re: Modification d'un fichier texte | |
| |
|
| |
| Modification d'un fichier texte | |
|