1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies. En savoir plus.
  2. Bonjour tout le monde ! Veillez consulter la Politique de forum pour comprendre nos règles, Merci a vous !
    Rejeter la notice

Traiter plusieurs fichiers texte à la fois

Discussion dans 'Windev' créé par suenodesign, Fev 9, 2018.

  1. suenodesign

    suenodesign Well-Known Member
    MEMBRE WX

    Inscrit:
    Jan 1, 2018
    Messages:
    507
    J'aime reçus:
    732
    Traiter plusieurs fichiers texte à la fois

    Code (Text):

    MonFicTxt est un entier
    MaLigne est une chaine
    sResListeFichier est une chaine = fListeFichier("C:\Dossier\*.TXT",frNonRécursif)

    POUR TOUTE CHAÎNE sFichier DE sResListeFichier SEPAREE PAR RC
       MonFicTxt = fOuvre(sFichier,foLecture)
         fPosition(MonFicTxt,0)
         MaLigne = fLitLigne(MonFicTxt)
         Tantque MaLigne <> EOT
            Base.RubLigne = SansEspace(MaLigne)
            hAjoute(Base)
            MaLigne = fLitLigne(MonFicTxt)
         FIN
       fFerme(MonFicTxt)
    FIN
     
    joker, raheek_makhtoom et Fakirato aiment ça.
  2. Fakirato

    Fakirato New Member
    WXG24 MEMBRE WX WXG 23 WXG 22 WXG 21

    Inscrit:
    Déc 30, 2017
    Messages:
    302
    J'aime reçus:
    816
    Merci a vous mon professeur !
     
    suenodesign apprécie ceci.
  3. chitanous.dz

    chitanous.dz Member

    Inscrit:
    Jan 2, 2018
    Messages:
    14
    J'aime reçus:
    22
    Code (Text):

    sFichiers,sFichier,sLigne,sBuffer sont des chaînes
    f,nNumFichier,nMaxFichier,nRC,nTaille,nLu,nLigne sont des entiers
    nTailleBuffer est un entier = 1000    //1000 semble être la meilleure valeur
     
    sFichiers=fListeFichier("IciVotreRépertoire"+["\"]+"*.csv",frNonRécursif)
    nMaxFichier=ChaîneOccurrence(sFichiers,RC)+1
     
    POUR TOUTE CHAINE sFichier DE sFichiers SEPAREE PAR RC
      nNumFichier++;Jauge(nNumFichier,nMaxFichier,"fichier : "+nNumFichier+" / "+nMaxFichier)
      Multitâche(-1)
      nTaille=fTaille(sFichier)  //servira de comparaison par la suite
      SI nTaille>0 ALORS
        f=fOuvre(sFichier,foLecture)
        SI f<>-1 ALORS
    //      ChronoDébut()  //pour tester la rapidité
          nLigne=0
          sBuffer=fLit(f,nTailleBuffer);nLu=Taille(sBuffer)
          TANTQUE sBuffer>""
            nRC=Position(sBuffer,RC)
            SI nRC < 1 ALORS
              sLigne=sBuffer;sBuffer=""
            SINON
              sLigne=Gauche(sBuffer,nRC-1);sBuffer=Milieu(sBuffer,nRC+2)
            FIN
            TANTQUE sLigne<>EOT
              nLigne++
     
              //=================================
              //ici traitement de la ligne
              //=================================
     
              SI sBuffer="" ALORS SORTIR
              nRC=Position(sBuffer,RC)
              SI nRC < 1 ALORS
                SI nLu < nTaille ALORS SORTIR//pour y ajouter un autre buffer, sinon c'est la dernière ligne à traiter
                sLigne=sBuffer;sBuffer=""
              SINON
                sLigne=Gauche(sBuffer,nRC-1);sBuffer=Milieu(sBuffer,nRC+2)
              FIN
            FIN
            SI nLu=nTaille ALORS SORTIR
            sLigne=fLit(f,nTailleBuffer);nLu+=Taille(sLigne);sBuffer+=sLigne
          FIN
          fFerme(f)
    //      Trace(ChronoFin+TAB+nLigne)
        FIN
      FIN
    FIN
     
    charlie, suenodesign et Fakirato aiment ça.
  4. suenodesign

    suenodesign Well-Known Member
    MEMBRE WX

    Inscrit:
    Jan 1, 2018
    Messages:
    507
    J'aime reçus:
    732
    Merci @

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

     

Partager cette page

Chargement...