IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Comment effacer ou modifier le contenu d'un fichier externe [WD20]


Sujet :

WinDev

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut Comment effacer ou modifier le contenu d'un fichier externe
    Bonjour,

    Je souhaite pouvoir gérer un fichier externe pour stocker les paramètres d'une application.
    J'ai donc utilisé les fonctions qui me permette de créer et d'écrire des données dans un fichier externe.

    Mais je ne trouve aucune fonction pour modifier le contenu du fichier.
    Imaginons qu'un seul paramètre est changé, comment effacer le texte précisant l'ancienne valeur avant d'écrire la nouvelle ?

    Je vois des fonctions pour créer ou supprimer les fichiers, des fonctions pour lire, écrire ou se déplacer, mais rien pour supprimer
    Et quand j’écris, il ne remplace pas, il insère.

    Merci de votre aide
    Les solutions les plus simples sont les plus efficaces

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut
    Bonjour,
    J'utilise également de fichiers externes depuis longtemps et je suis confronté aux mêmes problèmes / Bonne idée de poser la question sur le forum.
    Je suis l'écoute...

  3. #3
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    Bonsoir,

    Il faudrait peut-être préciser quelles fonctions vous utilisez : fOuvre, fLit, fEcrit vraisemblablement plutôt que fChargeTexte-Buffer, fSauve, vu le problème que vous soulevez.

    Il est conseillé de réserver fLit, fEcrit au contenu de type binaire et fCharge / fSauve au contenu de type texte.

    S'il faut supprimer une partie du fichier, utiliser fCharge..., traiter la chaîne ou le buffer qui représente en fait le contenu de tout le fichier et resauver.
    fSauveBuffer/Texte supprime et recrée le fichier s'il existait déjà.

    Avec fOuvre, voir les constantes foAjout et foCréation
    Avec fLit/fLitLigne et fEcrit/..., ne pas oublier que le pointeur est positionné sur le dernier octet lu ou écrit (probablement l'origine de votre problème d'ajout systématique)
    Enfin, fPositionne permet de connaître et gérer la position du pointeur
    De mémoire, on peut aussi gérer la taille du fichier et le tronquer / l'agrandir.


    Bien lire la doc qui est assez claire dans l'ensemble.

    Hemgé

  4. #4
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    Bonsoir,

    Classiquement, les 2 fonctions à utiliser pour stocker les paramètres d'une application sont IniLit et IniEcrit.
    Elles sont très pratiques.

    Les fonctions fxxxx sont plutôt utilisées pour écrire des "gros" fichiers.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  5. #5
    Membre éprouvé
    Inscrit en
    Avril 2008
    Messages
    1 129
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 1 129
    Points : 1 283
    Points
    1 283
    Par défaut
    Salut Lolo,

    Pour ce cas de figure, je recrée toujours le fichier en récupérant au préalable la valeur avant.

    En cas de modif, des remplace() au préalable puis je sauvegarde à nouveau sous le même nom.

    Bon DEV

  6. #6
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 950
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 950
    Points : 9 279
    Points
    9 279
    Par défaut
    hello,
    tbc92 a raison, il y a deux fonctions IniLit et IniEcrit qui permettent de travailler avec des fichiers de paramètres (.ini) et qui gèrent automatiquement la structure du fichier. Sinon on peut aussi utiliser la base de registre.

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  7. #7
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Je plussoie JP. Je ne vois pas l'intérêt de s'enquiquiner à utiliser des fonctions "f" pour un fichier de paramètres. Les fonctions flit / fecrit sont prévues pour faire de la lecture / écriture séquentielle(s). Ce n'est pas du tout prévu pour faire des recherches de valeurs. Les fonctions Inilit et Iniécrit sont topissimes pour cela.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  8. #8
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 151
    Points
    2 151
    Par défaut
    L'air du temps voudrait qu'on stocke ces données (configuration, paramètres) dans des fichiers XML... sinon je plussoie également l'idée des fonctions INI (c'est comme ça que je procède moi aussi et c'est très pratique).
    SQL : le véritable Esperanto

    "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)

    MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !

  9. #9
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Citation Envoyé par michel.souris Voir le message
    L'air du temps voudrait qu'on stocke ces données (configuration, paramètres) dans des fichiers XML... sinon je plussoie également l'idée des fonctions INI (c'est comme ça que je procède moi aussi et c'est très pratique).
    Oui, le XML est à la mode, et surtout mis à toutes les sauces.

    Je ne suis pas sûr qu'en xml, tu puisses faire plus simple(une ligne de code) que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sCheminFichiersHF est chaine = inilit("Chemins", "CheminFichiersHF", "", NomFichierIni)
    avec comme contenu, un fichier aussi léger que celui-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [Chemins]
    CheminFichiersHF = c:\toto
    ...
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  10. #10
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 151
    Points
    2 151
    Par défaut
    Citation Envoyé par frenchsting Voir le message
    Je ne suis pas sûr qu'en xml, tu puisses faire plus simple(une ligne de code) que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sCheminFichiersHF est chaine = inilit("Chemins", "CheminFichiersHF", "", NomFichierIni)
    avec comme contenu, un fichier aussi léger que celui-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [Chemins]
    CheminFichiersHF = c:\toto
    ...
    Là dessus nous sommes d'accord...

    En revanche concernant certaines données le XML est bien plus adapté notamment en cas de nombre variable de certains paramètres (perso avec le INI dans certain cas je suis obligé de stocker/lire le nombre de ligne afin de boucler pour récupérer un nombre dynamique de paramètre)... mais ça n'est que mon point de vue !
    SQL : le véritable Esperanto

    "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)

    MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !

  11. #11
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut
    Merci de votre aide.

    Je vais étudier les fonction init
    Les solutions les plus simples sont les plus efficaces

  12. #12
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut
    Je viens de jeter un oeil à Initlit et initecrit, c'est pile ce qu'il me faut !
    Merci les gars et dsl de vous avoir dérangé pour une question aussi basic ;-)
    Les solutions les plus simples sont les plus efficaces

  13. #13
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Citation Envoyé par michel.souris Voir le message
    Là dessus nous sommes d'accord...

    En revanche concernant certaines données le XML est bien plus adapté notamment en cas de nombre variable de certains paramètres (perso avec le INI dans certain cas je suis obligé de stocker/lire le nombre de ligne afin de boucler pour récupérer un nombre dynamique de paramètre)... mais ça n'est que mon point de vue !
    +1 mais pour ton pb de nombre variable, j'ai contourné en utilisant les NumeriqueVersChaine.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    i = 1 
    bOk = vrai
    TANTQUE bOk
     TabListe[i] = inilit("Utilisateurs", "Utilisateur" + NumeriqueVersChaine(i,"02d"), "", NomFichierIni)
      bOk = pas (TabListe[i] = "")
      i++
    FIN
    NbUtilisateurs = i - 1
    Avec un fichier ini :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [Utilisateurs]
    Utilisateur01 = tata
    Utilisateur02 = titi
    Utilisateur01 = tutu
    ...
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/10/2009, 13h13
  2. modifier le contenu d'un fichier
    Par progamer54 dans le forum ANT
    Réponses: 1
    Dernier message: 06/12/2007, 11h31
  3. comment je pourrais modifier un attribut dans un fichier xml
    Par ryoussef19 dans le forum Visual C++
    Réponses: 6
    Dernier message: 24/08/2007, 14h16
  4. Modifier le contenu d'un fichier
    Par Core8 dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 30/01/2007, 15h21
  5. Réponses: 4
    Dernier message: 28/03/2006, 23h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo