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 :

Écrire dans un fichier texte à des positions précises


Sujet :

WinDev

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur indépendant
    Inscrit en
    Mai 2002
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur indépendant

    Informations forums :
    Inscription : Mai 2002
    Messages : 231
    Points : 116
    Points
    116
    Par défaut Écrire dans un fichier texte à des positions précises
    Bonjour,

    Je souhaite écrire dans une fichier texte à des positions bien précises.

    Il s'agit de mettre en place un exportation pour un logiciel de compta et il faut que j'écrive :
    le n° de mouvement de la position 1 à 10
    le code journal de la position 11 à 16

    etc....

    Avez-vous une idée simple pour écrire ces données dans la position voulue

    Merci

    Philippe

  2. #2
    Membre confirmé Avatar de wd_newbie
    Homme Profil pro
    Développeur
    Inscrit en
    Mars 2007
    Messages
    723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 723
    Points : 627
    Points
    627
    Par défaut
    Qu'entends-tu par "position" ?

    Ligne ? ou position dans un CSV ?


    Olivier

  3. #3
    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
    Il parle de fichier plat. Chaque zone a une longueur fixe...

    Regarde du coté de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    complète(ChaineSource,nLongueur) et de 
    numeriqueverchaine(UnNombreEntier,"08d") ou 
    numeriqueverchaine(UnNombreReel,"10.2f")
    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

  4. #4
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Bonjour
    Il y a plein de façon de faire, chacun a sa méthode

    L'important est d'assembler une chaîne qui correspondra à une ligne de ton fichier.
    Pour les chaînes tu utilises des Complete() (eventuellement Gauche() pour tronquer la chaîne au cas où) et pour les numériques des NumeriqueVersChaîne()

    On peut aussi compléter la ligne complète avec des espaces et y insérer ensuite les données, exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    sLigne est une chaîne = Complète(sLigne, 100, Caract(32))
     
    sLigne[[1 A 10]] = "0001241"		// ou sLigne[[1 sur 10]] = "0001241"
    sLigne[[11 A 13]] = "CLI"		// ou sLigne[[11 sur 3]] = "CLI"
    // etc ...
     
    Info(sLigne)

  5. #5
    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
    Voici la méthode que j'utilisais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ch est chaine =  ""
    numFichierTexte = fcree("Fichier.txt")
    hlitpremier(MonFichier,Cle)
    Tantque pas hendehors(MonFichier)
    ch+=complete(MonFichier.Nom,30)
    ch+=complete(MonFichier.Prenom,20)
    ch+=complete(MonFichier.Adresse,50)
    ...
    ch+=numeriqueverschaine(MonFichier.QteLivree,"7.2f")
    fecritLigne(numFichierTexte,ch)
    hlitSuivant(MonFichier,Cle)
    fin
    Une fois que tu es bien calé, utilise plutot un au lieu du fecritligne Puis fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fsauvetexte("Fichier.txt",ch)
    C'est plus rapide...

    Note, mets bien des complète et numeriqueverschaine partout. Cela t'évitera d'avoir une déconvenue, le jour ou tu modifies ton analyse (exemple adresse passe de 50 à 55).
    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

  6. #6
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Citation Envoyé par hpascal
    Pour les chaînes tu utilises des Complete() (éventuellement Gauche() pour tronquer la chaîne au cas où) et pour les numériques des NumeriqueVersChaîne()
    J'ai dis une bêtise, Complete() se charge aussi de tronquer la chaîne

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur indépendant
    Inscrit en
    Mai 2002
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur indépendant

    Informations forums :
    Inscription : Mai 2002
    Messages : 231
    Points : 116
    Points
    116
    Par défaut Solution
    Je vais voir pour me débrouiller avec vos infos

    Merci pour vos réponses

    Philippe

Discussions similaires

  1. Positionner/écrire dans un fichier texte des caractères là où on veut
    Par nicofromChina dans le forum Entrée/Sortie
    Réponses: 11
    Dernier message: 01/04/2009, 15h42
  2. Réponses: 20
    Dernier message: 27/06/2006, 17h42
  3. Réponses: 32
    Dernier message: 17/05/2006, 16h03
  4. [Delphi] Comment écrire dans un fichier texte ?
    Par Mickey.jet dans le forum Débuter
    Réponses: 2
    Dernier message: 01/04/2006, 14h00
  5. [DOS] Commande pour écrire dans un fichier texte
    Par Jeff87-01 dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 28/03/2006, 01h04

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