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 :

boucle infinie - lecture fichier


Sujet :

WinDev

  1. #1
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 105
    Points : 63
    Points
    63
    Par défaut boucle infinie - lecture fichier
    salut à tous !

    Voilà, j'ai juste un petit soucis sur la lecture de mon fichier. Je vous mets le code qui pause problème pour commence :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    TANTQUE bSortie = Faux			
            cCar = fLit(nFichier_ref,1) 
    	UneLigne += cCar 
    	SI cCar = Caract(10) OU -1 ALORS
    		bSortie = True
    	FIN
    FIN
    voila en fait je suis obligé de lire caractère par caractère afin de traiter mon fichier ligne par ligne (le caractère de fin de ligne est pas le bon bon pour "fLitLigne" )

    ca marche bien pour lire ligne par ligne, par contre ca ne voit pas ma fin de fichier (je suppose donc que le "-1" de sert à rien), et mon programme se "freeze" donc.

    Quelqu'un aurai-il une solution?

    Merci d'avance !

  2. #2
    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 803
    Points
    3 803
    Par défaut
    Bonjour.

    dans un premier temps ton test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SI cCar = Caract(10) OU -1 ALORS
    n'est pas correcte

    il faudrais écrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SI cCar = Caract(10) OU cCar = -1 ALORS
    Ensuite Flit ne permet pas de lire caractère par caractère mais il lit un nombre d'octet.

    Pour ton problème de CSV (car je suppose que ce post rejoint l'autre que tu as déjà ouvert.
    Si tu veux lire caractère par caractère le mieux est de faire un FchargeTexte
    puis tu fais une boucle pour lire tes caractère 1 à 1

    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    fichier est chaîne = fChargeTexte("C:\MonFichier.CSV")
    POUR i = 1 _A_ Taille(fichier)
    	Trace(fichier[[i]])
    FIN
    à partir de là tu peux vérifier la présence de ton Caract(10)

  3. #3
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2009
    Messages : 50
    Points : 72
    Points
    72
    Par défaut
    Bonjour,

    Pour un peu plus de souplesse, notamment au niveau du séparateur de ligne, j'utilise de plus en plus la syntaxe suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ContenuFIC est une chaine = fchargetexte("C:\Fichier.txt")
    MonSepLng est une chaine = caract(10)
     
    POUR TOUTE CHAINE ligne de ContenuFIC SEPAREE PAR MonSepLng
      SI ligne <> "" et ligne <> EOT ALORS
        //Traitements ....
      FIN
    FIN
    De plus sur de gros fichiers, il me semble que les temps de traitements sont plus rapides. (Si quelqu'un pouvez confirmer....)

    Bon courage pour la suite.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    136
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 136
    Points : 241
    Points
    241
    Par défaut
    J'aimerais poursuivre l'oeuvre de mail.spam en complétant son code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    s_Ligne est une chaine
    n_IndiceLigne est un entier
    fichier est chaîne = fChargeTexte("C:\MonFichier.CSV")
     
    n_IndiceLigne = 1
    s_Ligne = extraitchaine(fichier, n_IndiceLigne, caract(10) )
    TantQue pas s_Ligne dans ("", eot)
          Trace(s_Ligne)
     
           n_IndiceLigne ++
           s_Ligne = extraitchaine(fichier, n_IndiceLigne, caract(10) )
    Fin

  5. #5
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 105
    Points : 63
    Points
    63
    Par défaut
    ok, merci, je test avec le fcharge texte et je vous redis =)


    (ah, et pour le ... cCar = Caract(10) OU -1 ... j'avais bien mis cCar = Caract(10) OU cCar = -1 mais je l'ai changé juste avant de poster histoire de tout tenter ^^)

  6. #6
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 105
    Points : 63
    Points
    63
    Par défaut
    yopyop !

    j'ai trouvé le caractère de fin grâce à trace : <\n >

    je suppose donc que c'est \n mais en fait non (ma boucle est sans fin >_<)


    enfin bon, j'ai donc mis grâce à la taille(fichier) et ça marche nickel !! merci beaucoup =)

    J'ai tout compris et grâce à vous donc ça le fait

    bonne journée à tous !

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    136
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 136
    Points : 241
    Points
    241
    Par défaut
    Execute juste cette ligne de code :

    le trace affichera
    En effet, un retour à la ligne ne se voit pas (comme une tabulation) et donc ces "caractères invisibles" sont remplacé par du texte dans le trace, texte compris entre les caractères "<" et ">".

    Pour info, si je ne me trompe pas, en C, le fait d'ajouter "\n" dans une chaine génère un retour à la ligne.

  8. #8
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 105
    Points : 63
    Points
    63
    Par défaut
    Pour info, si je ne me trompe pas, en C, le fait d'ajouter "\n" dans une chaine génère un retour à la ligne.
    oui c'est bien un retour chariot. cependant, le caract(10) indiquait la fin de ligne (donc par exemple, deux lignes dans le fichier = deux sauts de ligne ici) et donc il n'y aurai pas de caractère final ... un peu bizard mais bon =)

Discussions similaires

  1. boucle infini lecture de fichier
    Par freeway57 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 13/06/2014, 13h57
  2. Boucle infini importation fichiers .txt
    Par cyrus87 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 01/03/2014, 11h45
  3. Boucle infinie de fichiers
    Par Fabien.31 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 01/05/2012, 18h03
  4. Réponses: 16
    Dernier message: 03/11/2005, 19h33
  5. Modification d'un fichier (boucle infinie)
    Par poof65 dans le forum C
    Réponses: 8
    Dernier message: 18/09/2005, 19h12

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