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 :

Génération fichier Texte format AFB120


Sujet :

WinDev

  1. #21
    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
    Tout ça manque singulièrement de méthode. Ton problème est avant tout un problème de méthode de travail.

    Ici, tu t'étonnes d'avoir des lignes avec 'ompte : ' dans ton fichier résultat.
    A partir du moment où tu as des lignes de ce type dans ton fichier d'entrée, c'est normal de les retrouver dans ton fichier de sortie.
    Si tu ne veux pas que ton programme traites le début du fichier, à toi de trouver les bonnes règles de gestion.
    Par exemple, ne pas traiter les 10 premières lignes, ou bien ne pas traiter les lignes qui se trouvent avant la ligne 'Solde Créditeur ...'

    D'autre part, ton code est indenté n'importe comment. Quand on est en galère, la première chose à faire, c'est d'indenter correctement le code. Ca te facilitera la lecture.

    Ici, le conseil que je peux te donner.
    1. tu crées une nouvelle fenêtre vierge (donc tu mets à la poubelle temporairement tout ce que tu nous as montré)
    2. tu fais un morceau de code pour lire ton fichier et pour chaque ligne, simplement détecter ce que tu veux faire avec cette ligne.
    C'est à dire un morceau de code qui lit chaque ligne, et qui affiche un message (avec la fonction Trace par exemple) pour chaque ligne ;
    Par exemple, tu affiches la ligne suivie du mot 'ENTETE' si c'est une ligne d'entête
    ou la ligne , suivie du mot 'A TRAITER', si c'est une ligne à traiter.

    Et tu vérifies sur plusieurs fichiers de test si cette partie là marche correctement.

    Ensuite, tu t'attaques au traitement proprement dit.
    En tout cas, c'est comme ça que je ferais ; je suis totalement incapable de programmer un truc qui fait 180 lignes de code sans décomposer de cette façon.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  2. #22
    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
    C'est ce qu'on appelle faire un automate à états finis.

    Je suis d'accord avec toi et ta méthode, mais je l'aurais dit de façon plus diplomatique. J'ai l'impression que _Shuriken_ est un peu en panique.
    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

  3. #23
    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
    Citation Envoyé par frenchsting Voir le message
    C'est ce qu'on appelle faire un automate à états finis.

    Je suis d'accord avec toi et ta méthode, mais je l'aurais dit de façon plus diplomatique. J'ai l'impression que _Shuriken_ est un peu en panique.
    Idem, je pense qu'il est en mode 'panique', et effectivement, je ne suis pas diplomate.

    Mais je préfère être direct, et être sûr d'avoir un message clair, plutôt que mettre plein de périphrases dans tous les sens, et arriver à un truc qui ne serait pas compris par l'intéressé. D'autant plus qu'expliquer la méthode, ça prend déjà pas mal d'énergie, et l'expliquer avec diplomatie, ça en prendrait encore plus.

    J'ai fait un tout petit effort de diplomatie à la fin : j'ai dit que personnellement, je serais incapable de faire autrement qu'en décomposant ainsi.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  4. #24
    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
    C'est tout à ton honneur d'être direct et surtout de l'admettre.

    Espérons que _Shuriken_ va adopter ta méthode pour avancer.
    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

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 951
    Points : 9 280
    Points
    9 280
    Par défaut
    hello,
    pour faire les extractions sur le fichier de départ il y a la possibilité d'utiliser l'instruction vérifieExpressionRégulière qui utilise les expressions régulières. Bon les expressions régulières c'est pas simple mais quand on a compris le principe et qu'on a un exemple qui ressemble à ce qu'on veut faire, on arrive à s'en sortir.
    Voici un exemple pour extraire le compte et la devise du fichier que tu nous as donnés en exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    sFichier est une chaîne
    sNcompte est une chaîne
    sDevise est une chaîne
    ContenuFic est une chaîne
    //On récupère le fichier sur le disque
    sFichier = fSélecteur("C:\","Sélectionner un fichier","Fichier Texte (*.TXT)" + TAB + "*.txt" + RC + "Tous" + TAB + "*.*", "txt")
    ContenuFic = fChargeTexte(sFichier)
    	POUR TOUTE  CHAINE sLigne  DE ContenuFic SEPAREE PAR RC		
    	   SI sNcompte	= "" ALORS 
    	 	 SI VérifieExpressionRégulière(sLigne," Compte    : ([0-9]+)[ ]+([A-Z]+).*",sNcompte,sDevise) ALORS	Trace(Compte : sNcompte + " - Devise : " + sDevise)	
    	   FIN
           FIN
    Alors c'est quoi ce " Compte : ([0-9]+)[ ]+([A-Z]+).*"
    cela veut dire :
    1 - la ligne doit commencer par " Compte : " exactement
    2 - ensuite on met des parenthèse pour extraire une variable (sNCompte) qui doit être composée de chiffres ([0-9]) avec au moins 1 chiffre (+)
    3 - ensuite le [ ]+ veut dire qu'il y a un espace ou plusieurs
    4 - ensuite on met des parenthèse pour extraire la deuxième variable (sDevice) qui doit être composée de lettres majuscules ([A-Z]) avec au moins 1 lettre (+)
    5 - et le .* veut dire qu'après cela peut-être n'importe quoi


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

Discussions similaires

  1. Effacer une ligne d'un fichier texte formaté
    Par TLImpala dans le forum VBA Access
    Réponses: 5
    Dernier message: 14/04/2008, 15h51
  2. écrire fichier texte format special
    Par garenne dans le forum MATLAB
    Réponses: 5
    Dernier message: 14/04/2008, 15h28
  3. Lecture fichier texte format personnel
    Par thomtom dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 10/04/2008, 13h18
  4. Génération fichier texte FORMS6
    Par amarkamel dans le forum Forms
    Réponses: 0
    Dernier message: 01/08/2007, 10h09
  5. Problème Génération fichier texte
    Par veenie dans le forum Oracle
    Réponses: 5
    Dernier message: 18/05/2006, 11h21

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