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

4D Discussion :

Traitement d'un fichier texte.


Sujet :

4D

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Traitement d'un fichier texte.
    Bonjour tout le monde,

    Alors le truc, c'est que j'ai des lignes d'enregistrements dans un fichier texte séparées par des ";". Savez-vous comment on fait pour mettre la 1ère ligne dans une variable, procéder au traitement, puis passer à la seconde ligne ... jq'à la fin du fichier.

    Pr le traitement, avec position et sous-chaine je dois pouvoir m'en sortir, mais je ne sais comment récupérer à partir d'un fichier.
    Il y a des recevoir paquets mais je ne trouve pas vraiment de doc sur ça, si quelqu'un pouvait m'éclairer ?

    Merci.

  2. #2
    Membre régulier
    Inscrit en
    Juin 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 67
    Points : 80
    Points
    80
    Par défaut
    Il faut utiliser les commandes ouvrir document et RECEVOIR PAQUET :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    C_HEURE($Heure)
    $Heure:=Ouvrir document("";"TEXT")
    Si (OK=1)
    	$Texte:=""
    		RECEVOIR PAQUET($Heure;$Texte;taille document($Heure))
    	Fin de si 
    FERMER DOCUMENT($Heure)
    Si vous êtes en 4dv11, vous pouvez recevoir tout en une seule fois dans la variable $Texte, sinon par paquet de 32000 caractères, ou en utilisant l'autre syntaxe de RECEVOIR PAQUET avec un délimiteur qui sera celui de la fin enregistrement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    C_HEURE($Heure)
    $Heure:=Ouvrir document("";"TEXT")
    Si (OK=1)
    	$Texte:=""
    	Repeter 
    		RECEVOIR PAQUET($Heure;$Texte;$Delimiteur)	
    `Traitement des données
    ....
    	Jusque (Position dans document($Heure)>=Taille document($Heure))
     
    Fin de si 
    FERMER DOCUMENT($Heure)
    Dominice

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Février 2006
    Messages : 74
    Points : 84
    Points
    84
    Par défaut
    RECEVOIR PAQUET en passant le caractère ";" comme délimiteur.
    Voir .

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    598
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 598
    Points : 628
    Points
    628
    Par défaut
    Pourquoi tu t'embêtte avec le délimiteur ?
    Un fichier texte ça se lit ligne par ligne sans rien d'autres et tu peu traiter la lecture de la ligne puis passer à la ligne suivante.

    Par contre si une seule ligne de texte est composée de plusieurs chaines séparées par ton délimiteur là c'est autre chose, tu lis UNE ligne du fichier, puis tu utilise cette fonction, par contre elle est en javascript elle me provient d'un pote^^ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    //... Sépare les mots d''une chaine qui sont liés par le séparateur indiqué 
     
    function separe(chaine,sep)
    {
    phrase=chaine;
    maliste=new Array(8);
    i=0;position=0;m=0;
    if (chaine!="")
      {
       mot="";
       for(i=0;i<phrase.length;i++)
         {
          char=phrase.substring(i,i+1);
          if (char==sep)
             {
              maliste[m]=mot; m++;
              mot="";
             }else {mot=mot+char;}
          }
        return maliste;
        }
      return 0;
      }
    La fonction retourne le tableau maliste avec chaque valeur dans une case du tableau.

    Tu travaille dessus, puis tu peux aller faire la ligne suivante du fichier, etc...
    Cliquez ici et reprenez le pouvoir !
    A bas IE !, Google, et le pistage du net, testons DuckDuckGo.com
    Lords Of The Realm II Download : Lords of the realm 2
    Infos en anglais :Ici

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Re.
    Merci pour votre aide, j'ai fait mes tests sur des petits fichiers avec la méthode de dominice, ça passe.
    Par contre, si je teste avec un gros fichier genre 500 Mo, pas dit que ça ne rame pas.
    J'essaierai mais merci de votre aide. J'suis encore novice en 4D.

Discussions similaires

  1. Traitement d'un fichier texte
    Par Vincinho dans le forum VB.NET
    Réponses: 1
    Dernier message: 21/04/2010, 15h48
  2. requete de traitement d'un fichier texte
    Par AlternantOracle dans le forum Langage
    Réponses: 2
    Dernier message: 07/12/2009, 15h32
  3. traitement d'un fichier texte
    Par benselma dans le forum Général Java
    Réponses: 4
    Dernier message: 14/05/2008, 16h26
  4. Réponses: 8
    Dernier message: 14/09/2006, 16h43
  5. [INFO] Traitement d'un fichier texte
    Par doudine dans le forum API standards et tierces
    Réponses: 9
    Dernier message: 25/04/2006, 09h23

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