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
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