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 :

FLitLigne retourne tout le fichier cause => pas de CR en fin de ligne, que des LF [WD17]


Sujet :

WinDev

  1. #1
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut FLitLigne retourne tout le fichier cause => pas de CR en fin de ligne, que des LF
    Bonjour à tous, voilà pour une fois je ne vais pas passer trop de temps à expliquer mon soucis, tout est dans le titre.

    Je récupère un fichier txt exporté par une gpao externe en PROGRESS. Le fihier résultant resemble à ça :

    ARTICLE#PLAN
    CEMB.BAND.CERC.PP#RLX 2500M, 2RL/CA
    CEMB.FILM.BULL.002#50M PAR RLX
    CEMB.FILM.BULL.003#DIA BULLE : 25MM
    CEMB.FILM.ETI.02#400 METRES
    CEMB.PLA.DEC.PE25#305X270 EP:2.7
    CEMB.POCH.EXPED01#CARTON DE 100 PCS
    CEMB.RUB ADH.50FRA#1 CARTON => 36 PC
    Sauf que si j'affiche les caractères spéciaux dans un éditeur correct genre SciTE, je m'apeçois qu'e fin de ligne j'ai le marqueur LF mais pas de CR.

    Du coup quand je souhaite parcourir ce fichier depuis mon programme windev, la fonction fLitLigne ne s'arrête pas à la fin de la première ligne et me retourne tout le fichie txt...

    Quelle solution j'ai ? Je ne veux pas exporter autre chose qu'un bête fichier txt avec des séparateurs.

    Merci à vous

    EDIT : le fichier txt est exporté d'une GPAO tournant sur une distrib RedHat, je pense qu ça explique pourquoi on n'a pas le RC mais seulement LF...

  2. #2
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Localisation : France

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

    Informations forums :
    Inscription : Février 2007
    Messages : 615
    Points : 841
    Points
    841
    Par défaut
    Bonjour,
    Soit tu traites ton fichier comme s'il était sur une ligne avec des extractions de chaines, soit tu recrées ton RC .
    Sachant que LF correspond à caract(10) et RC correspond à caract(10)+caract(13)
    Pour la première solution tu peux lire dans un buffer (parce que si ton fichier est gros tu risques d'exploser), tu t'arrêtes au dernier caractère LF et tu as un code du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Pour toute chaine maligne de MonBuffer separee par Caract(10)
    //ton code
    fin
    Soit pour la deuxième solution
    Tu fais un remplace caract(10) par caract(13), tu enregistres ton résultat et tu relis ton fichier avec les banales flitligne...

    Gancau

  3. #3
    Membre du Club
    Femme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2011
    Messages : 18
    Points : 49
    Points
    49
    Par défaut
    Bonjour, ou tu utilise fLitLigne(IdFichier, LF)

  4. #4
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Localisation : France

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

    Informations forums :
    Inscription : Février 2007
    Messages : 615
    Points : 841
    Points
    841
    Par défaut
    Merci, je ne connaissais pas cette nouveauté de la version 17...
    Cela va simplifier certains traitements....

    Bon dev
    Gancau

  5. #5
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 394
    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 394
    Points : 9 571
    Points
    9 571
    Par défaut
    En fait, tu fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Extract, maligne sont chaines,
    MonBuffer est chaine = fchargetexte("c:\dossier\fichier.txt")
    Pour toute chaine maligne de MonBuffer separee par Caract(10) // tu peux également mettre LF à la place de caract(10)
    extract = maligne[[1 a 10]]
    ...
    fin
    Note : ton fichier ne dois pas être énorme (quelques méga tout au plus) afin de ne pas saturer la mémoire.

  6. #6
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Ok merci pour les rapides propositions.

    J'utilise finalement le split autour du caractère Caract(10) et un tableau dynamique.

    J'ai bien essayé avec le fLitLigne(idfichier, LF) mais bien qu'ayant la v17, il ne me reconnait pas le LF. A la limite je peux mettre CRLF mais ça ne m'arrange pas tellement plus !

    C'est un petit fichier texte donc je ne pense pas exploser le buffer

  7. #7
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Par contre, je rajoute une petite qestion dans le meme post car c'est un peu lié :

    j'ai donc réussi grâce à vous à alimenter un objet LISTE en lisant mon fichier txt. J'aimerais que cette liste soit filtrée selon un mot clé qui sera entré dans une zone de saisie...

    Je sais comment filtrer une table, une requête, enfin tout ce qui s'appuie sur une BD, mais pas un objet rempli par programmation...

    Est-ce qu'il existe une fonction toute faite pour ça, ou bien je dois supprimer le contenu de ma liste et tout regénérer en relisant/filtrant mon buffer ?

  8. #8
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 394
    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 394
    Points : 9 571
    Points
    9 571
    Par défaut
    Le plus simple est de tout faire à l'os :
    Tu effaces tout et
    Comme tu as déjà tout ventilé dans un tableau, tu le parcours
    et si l'élément répond au critère, tu l'affiches...

  9. #9
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 801
    Points
    3 801
    Par défaut
    Bonjour,

    Pour ton filtre tu peux aussi remplir un champ table au lieu d'un champ liste.
    visuellement il n'y aura pas beaucoup de différence

  10. #10
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Ok. résolu. Merci

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 22/03/2012, 19h25
  2. Réponses: 6
    Dernier message: 02/08/2009, 13h39
  3. Tout mes fichiers php ne sont pas lu
    Par vermix dans le forum Langage
    Réponses: 5
    Dernier message: 26/09/2006, 12h21
  4. Réponses: 9
    Dernier message: 12/05/2006, 00h04

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