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
    734
    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 : 734
    Points : 637
    Points
    637
    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 351
    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 351
    Points : 9 507
    Points
    9 507
    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")

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

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 379
    Points : 4 496
    Points
    4 496
    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 351
    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 351
    Points : 9 507
    Points
    9 507
    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).

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

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 379
    Points : 4 496
    Points
    4 496
    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. 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