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 :

Traitement Fichier texte - Fonctions de calcul


Sujet :

WinDev

  1. #1
    Membre confirmé Avatar de _shuriken_
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    543
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2006
    Messages : 543
    Points : 454
    Points
    454
    Par défaut Traitement Fichier texte - Fonctions de calcul
    Bonjour à tous,

    J'ai un programme qui doit lire un fichier texte (à commencer à partir de la 2 ème ligne), récupère (s'il existe) chaque occurrence correspondant à un motif donné, pour ensuite dérouler un algorithme qui calcul une clé RIB. Ci-dessous mon code :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    sLignelue est une chaîne
    nRib est une entier
    sRibInitial est une chaîne
    sCodebanque est une chaîne
    sCodeguichet est une chaîne
    sNumcompte est une chaîne
     
    nFichier est un entier = fOuvre(SC_SelecteurFichier1.SAI_FIC,foLectureEcriture)
     
    SI nFichier=-1 ALORS
    	Erreur(ErreurInfo())
     
    SINON
    	sLignelue = fLitLigne(nFichier)
    	sCodebanque = sLignelue[[119 sur 5]]
     
    	SI Contient(sCodebanque,"ML123") ALORS
     
    		//Algo Calcul de la nouvelle clé RIB en fonction du nouveau code Banque ML173
     
    		sCodeguichet = sLignelue[[124 sur 5]]		
    		sRibInitial = sLignelue[[141 sur 2]]
     
    		sRibInitial = NumériqueVersChaîne(sRibInitial)
     
    		sNumcompte = sLignelue[[129 sur 12]]	
     
    		N est une chaîne = sCodeguichet+"43173"+sNumcompte
     
    		xDividende est un numérique = 100*Val(N)
     
    		nRib = modulo(xDividende,97)
     
    		nRib = NumériqueVersChaîne(nRib)
     
    		//On remplace le M123 sur la ligne par ML173, idem pour la clé RIB
     
    		sChaineRemplace est une chaîne 
     
    		sChaineRemplace = Remplace(sLignelue,sCodebanque,"ML173")
     
    		sChaineRemplace = Remplace(sLignelue,sRibInitial,nRib)	
    	FIN
    		Info("Corrections opportées avec succès.","L'ancienne clé RIB est :"+sRibInitial+"La nouvelle clé RIB est :"+nRib)
    FIN
     
    RAZ(SC_SelecteurFichier1)
    Je voudrai que le programme commence la lecture à partir de la 2 ème ligne uniquement. Je n'ai aucune erreur, mais le programme ne s'exécute pas.
    "When you can measure what you are speaking about, and express it in numbers, you know something about it; but when you cannot measure it, when you cannot express it in numbers, your knowledge is of a meager and unsatisfactory kind; it may be the beginning of knowledge, but you have scarcely in your thoughts advanced to the state of Science, whatever the matter may be."

    Lord Kelvin - 1883.

  2. #2
    Rédacteur/Modérateur

    Avatar de dsr57
    Homme Profil pro
    Analyste programmeur senior
    Inscrit en
    Octobre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste programmeur senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 139
    Points : 4 681
    Points
    4 681
    Billets dans le blog
    22
    Par défaut
    Bonjour ,

    Après un coup d'oeil rapide sur le code, tu n'as pas mis en place de boucle pour parcourir l'ensemble du fichier, tu traites uniquement la première. ligne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    //----->On ne traite pas la première ligne
    sLignelue = fLitLigne(nFichier)
    //----->On récupère le contenu de la deuxième ligne
    sLignelue = fLitLigne(nFichier)
    //----->boucle de parcours du contenu du fichier
    TantQue sLignelue <>EOT
     
           //----->Traitement
     
           //----->On récupère le contenu de la ligne suivante
           sLignelue = fLitLigne(nFichier)
    FIN
    Bon dev
    ------------------------------------------------------------------------------------------------------------------------------------------
    Mon message vous a aidé, pensez à remercier . La discussion est résolue, n'oubliez pas le tag
    ------------------------------------------------------------------------------------------------------------------------------------------
    Site perso : Formation, Expérience, Réalisations, ...
    Blog : Le Blog de DSR57 - Programmation WinDev

  3. #3
    Membre régulier
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Septembre 2013
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Analyste Programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2013
    Messages : 65
    Points : 96
    Points
    96
    Par défaut
    Bonjour,

    Pour lire un fichier texte à partir de la deuxième ligne il faut faire au début du code deux fLitLigne()
    Je te laisse rajouter les tests qui vont bien pour récupérer les erreurs.

    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
    sLignelue est une chaîne
    nRib est une entier
    sRibInitial est une chaîne
    sCodebanque est une chaîne
    sCodeguichet est une chaîne
    sNumcompte est une chaîne
     
    nFichier est un entier = fOuvre(SC_SelecteurFichier1.SAI_FIC,foLectureEcriture)
     
    SI nFichier=-1 ALORS
        Erreur(ErreurInfo())
     
    SINON
        sLignelue = fLitLigne(nFichier)
        sLignelue = fLitLigne(nFichier)
    
        sCodebanque = sLignelue[[119 sur 5]]
     
        SI Contient(sCodebanque,"ML123") ALORS
    .....
    Cordialement.

  4. #4
    Membre confirmé Avatar de _shuriken_
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    543
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2006
    Messages : 543
    Points : 454
    Points
    454
    Par défaut
    Bonjour dsr57,

    merci pour ce retour rapide.

    Quelle est la différence entre la 1ère et la 2ème ligne dans tes fLitLigne() ?

    Citation Envoyé par dsr57 Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //----->On ne traite pas la première ligne
    sLignelue = fLitLigne(nFichier)
    //----->On récupère le contenu de la deuxième ligne
    sLignelue = fLitLigne(nFichier)
    Oui, j'avais mis une boucle une fois, mais le programme tournait sans s'arréter :

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    sLignelue est une chaîne
    nRib est une entier
    sRibInitial est une chaîne
    sCodebanque est une chaîne
    sCodeguichet est une chaîne
    sNumcompte est une chaîne
     
    nFichier est un entier = fOuvre(SC_SelecteurFichier1.SAI_FIC,foLectureEcriture)
     
    SI nFichier=-1 ALORS
    	Erreur(ErreurInfo())
     
    SINON
    	sLignelue = fLitLigne(nFichier)
    	sCodebanque = sLignelue[[119 sur 5]]
     
    	TANTQUE sLignelue <>EOT
     
    	SI Contient(sCodebanque,"ML123") ALORS
     
    		//Algo Calcul de la nouvelle clé RIB en fonction du nouveau code Banque ML173
     
    		sCodeguichet = sLignelue[[124 sur 5]]
    		Trace(sCodeguichet)		
    		sRibInitial = sLignelue[[141 sur 2]]
     
    		sRibInitial = NumériqueVersChaîne(sRibInitial)
     
    		sNumcompte = sLignelue[[129 sur 12]]	
     
    		N est une chaîne = sCodeguichet+"43173"+sNumcompte
     
    		xDividende est un numérique = 100*Val(N)
     
    		nRib = modulo(xDividende,97)
     
    		nRib = NumériqueVersChaîne(nRib)
     
    		//On remplace le M123 sur la ligne par ML173, idem pour la clé RIB
     
    		sChaineRemplace est une chaîne 
     
    		sChaineRemplace = Remplace(sLignelue,sCodebanque,"ML173")
     
    		sChaineRemplace = Remplace(sLignelue,sRibInitial,nRib)
     
    		 sLignelue = fLitLigne(nFichier)	
    	FIN
    	FIN
    		Info("Corrections opportées avec succès.","L'ancienne clé RIB est :"+sRibInitial+"La nouvelle clé RIB est :"+nRib)
    FIN
     
    RAZ(SC_SelecteurFichier1)
    Merci _shuriken_
    "When you can measure what you are speaking about, and express it in numbers, you know something about it; but when you cannot measure it, when you cannot express it in numbers, your knowledge is of a meager and unsatisfactory kind; it may be the beginning of knowledge, but you have scarcely in your thoughts advanced to the state of Science, whatever the matter may be."

    Lord Kelvin - 1883.

  5. #5
    Rédacteur/Modérateur

    Avatar de dsr57
    Homme Profil pro
    Analyste programmeur senior
    Inscrit en
    Octobre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste programmeur senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 139
    Points : 4 681
    Points
    4 681
    Billets dans le blog
    22
    Par défaut
    Quelle est la différence entre la 1ère et la 2ème ligne dans tes fLitLigne() ?
    Tu veux que ton traitement commence à la deuxiéme ligne de ton fichier. la première instrcution fLitLigne() sert juste dans ce cas à se positionner sur la deuxième ligne

    Oui, j'avais mis une boucle une fois, mais le programme tournait sans s'arréter :
    Normal, tu as placé l'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sLignelue = fLitLigne(nFichier)
    dans le traitement conditionnel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SI Contient(sCodebanque,"ML123") ALORS
    tu dois placer cette ligne après l'instrcution FIN de cette condition

    Bon dev
    ------------------------------------------------------------------------------------------------------------------------------------------
    Mon message vous a aidé, pensez à remercier . La discussion est résolue, n'oubliez pas le tag
    ------------------------------------------------------------------------------------------------------------------------------------------
    Site perso : Formation, Expérience, Réalisations, ...
    Blog : Le Blog de DSR57 - Programmation WinDev

  6. #6
    Membre confirmé Avatar de _shuriken_
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    543
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2006
    Messages : 543
    Points : 454
    Points
    454
    Par défaut
    Voici le code après tes remarques, mais ça ne fait rien du tout :

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    sLignelue est une chaîne
    nRib est une entier
    sRibInitial est une chaîne
    sCodebanque est une chaîne
    sCodeguichet est une chaîne
    sNumcompte est une chaîne
     
    nFichier est un entier = fOuvre(SC_SelecteurFichier1.SAI_FIC,foLectureEcriture)
     
    SI nFichier=-1 ALORS
    	Erreur(ErreurInfo())
     
    SINON
    	//----->On ne traite pas la première ligne
     
    	sLignelue = fLitLigne(nFichier)
     
    	//----->On récupère le contenu de la deuxième ligne
     
    	sLignelue = fLitLigne(nFichier)
     
    	sCodebanque = sLignelue[[119 sur 5]]
     
    	TANTQUE sLignelue <>EOT
     
    	SI Contient(sCodebanque,"ML123") ALORS
     
    		//Algo Calcul de la nouvelle clé RIB en fonction du nouveau code Banque ML173
     
    		sCodeguichet = sLignelue[[124 sur 5]]
     
    		sRibInitial = sLignelue[[141 sur 2]]
     
    		sRibInitial = NumériqueVersChaîne(sRibInitial)
     
    		sNumcompte = sLignelue[[129 sur 12]]	
     
    		N est une chaîne = sCodeguichet+"43173"+sNumcompte
     
    		xDividende est un numérique = 100*Val(N)
     
    		nRib = modulo(xDividende,97)
     
    		nRib = NumériqueVersChaîne(nRib)
     
    		//On remplace le M123 sur la ligne par ML173, idem pour la clé RIB
     
    		sChaineRemplace est une chaîne 
     
    		sChaineRemplace = Remplace(sLignelue,sCodebanque,"ML173")
     
    		sChaineRemplace = Remplace(sLignelue,sRibInitial,nRib)
     
     
    	FIN
    	sLignelue = fLitLigne(nFichier)
    	FIN
    		Info("Corrections opportées avec succès.","L'ancienne clé RIB est :"+sRibInitial+"La nouvelle clé RIB est :"+nRib)
    FIN
     
    RAZ(SC_SelecteurFichier1)
    "When you can measure what you are speaking about, and express it in numbers, you know something about it; but when you cannot measure it, when you cannot express it in numbers, your knowledge is of a meager and unsatisfactory kind; it may be the beginning of knowledge, but you have scarcely in your thoughts advanced to the state of Science, whatever the matter may be."

    Lord Kelvin - 1883.

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Si par le "ça ne fait rien", tu entends que le fichier n'est pas modifié, ça me semble tout à fait normal.

    A quel moment le contenu du fichier est-il modifié ?

    Tatayo.

  8. #8
    Rédacteur/Modérateur

    Avatar de dsr57
    Homme Profil pro
    Analyste programmeur senior
    Inscrit en
    Octobre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste programmeur senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 139
    Points : 4 681
    Points
    4 681
    Billets dans le blog
    22
    Par défaut


    mais ça ne fait rien du tout
    Qu'est ce que ton programme ne fait pas :
    • il ne rentre pas dans la condition ;
    • il n'effectue pas correctement l'algorithme ;
    • ...


    Modif suite à réponse de Tatayo : C'est justement sur cette piste que je voulais l'emmener
    ------------------------------------------------------------------------------------------------------------------------------------------
    Mon message vous a aidé, pensez à remercier . La discussion est résolue, n'oubliez pas le tag
    ------------------------------------------------------------------------------------------------------------------------------------------
    Site perso : Formation, Expérience, Réalisations, ...
    Blog : Le Blog de DSR57 - Programmation WinDev

  9. #9
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    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 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Pour compléter le propos de dsr57, la condition SI Contient(sCodebanque,"ML123") est impossible. Pour avoir travaillé dans le chèque bancaire, un code établissement est composé uniquement de chiffres.

    De plus, si tu fixes une valeur pour ce code (SI Contient(sCodebanque,"99999")), tu ne traiteras que ledit établissement (99999).

    Point supplémentaire, si tes traitements de fichiers texte sont nombreux, mieux vaut utiliser fchargetexte(), beaucoup plus rapide en traitement.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  10. #10
    Membre confirmé Avatar de _shuriken_
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    543
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2006
    Messages : 543
    Points : 454
    Points
    454
    Par défaut
    Bonjour à tous,

    Merci frenchsting pour ces précisions. Mais le fichier contient bien des jeux de caractères alphanumériques, et je ne veux traiter que pour un seul cas ou on trouve un établissement qui à ce code ML123 (ou si tu veux 43123) sur la ligne, je vais prendre fChargeTexte() .

    dsr57, Le code ne modifie pas le fichier. Le contenu du fichier (lignes correspondantes aux critères) est modifié par les fonctions Remplace().
    "When you can measure what you are speaking about, and express it in numbers, you know something about it; but when you cannot measure it, when you cannot express it in numbers, your knowledge is of a meager and unsatisfactory kind; it may be the beginning of knowledge, but you have scarcely in your thoughts advanced to the state of Science, whatever the matter may be."

    Lord Kelvin - 1883.

  11. #11
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    Citation Envoyé par _shuriken_ Voir le message
    Voici le code après tes remarques, mais ça ne fait rien du tout :

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    sLignelue est une chaîne
    nRib est une entier
    sRibInitial est une chaîne
    sCodebanque est une chaîne
    sCodeguichet est une chaîne
    sNumcompte est une chaîne
     
    nFichier est un entier = fOuvre(SC_SelecteurFichier1.SAI_FIC,foLectureEcriture)
     
    SI nFichier=-1 ALORS
    	Erreur(ErreurInfo())
     
    SINON
    	//----->On ne traite pas la première ligne
     
    	sLignelue = fLitLigne(nFichier)
     
    	//----->On récupère le contenu de la deuxième ligne
     
    	sLignelue = fLitLigne(nFichier)
     
    	sCodebanque = sLignelue[[119 sur 5]]
     
    	TANTQUE sLignelue <>EOT
     
    	SI Contient(sCodebanque,"ML123") ALORS
     
    		//Algo Calcul de la nouvelle clé RIB en fonction du nouveau code Banque ML173
     
    		sCodeguichet = sLignelue[[124 sur 5]]
     
    		sRibInitial = sLignelue[[141 sur 2]]
     
    		sRibInitial = NumériqueVersChaîne(sRibInitial)
     
    		sNumcompte = sLignelue[[129 sur 12]]	
     
    		N est une chaîne = sCodeguichet+"43173"+sNumcompte
     
    		xDividende est un numérique = 100*Val(N)
     
    		nRib = modulo(xDividende,97)
     
    		nRib = NumériqueVersChaîne(nRib)
     
    		//On remplace le M123 sur la ligne par ML173, idem pour la clé RIB
     
    		sChaineRemplace est une chaîne 
     
    		sChaineRemplace = Remplace(sLignelue,sCodebanque,"ML173")
     
    		sChaineRemplace = Remplace(sLignelue,sRibInitial,nRib)
     
     
    	FIN
    	sLignelue = fLitLigne(nFichier)
    	FIN
    		Info("Corrections opportées avec succès.","L'ancienne clé RIB est :"+sRibInitial+"La nouvelle clé RIB est :"+nRib)
    FIN
     
    RAZ(SC_SelecteurFichier1)
    Le temps de réagir et certaines remarques ont déjà été faites, d'où les redites.

    Par rapport au code ci-dessus :

    • sRibInitial = NumériqueVersChaîne(sRibInitial)
      sRibInitial est déjà une chaîne
    • N est une chaîne = sCodeguichet+"43173"+sNumcompte
      Déclaration à faire une seule fois en début de code, avec les autres déclarations
      N est un nom prêtant à confusion pour une chaîne
    • xDividende est un numérique = 100*Val(N)
      Déclaration à faire une seule fois en début de code, avec les autres déclarations
    • nRib = NumériqueVersChaîne(nRib)
      nRib a été déclaré comme un entier
    • sChaineRemplace est une chaîne
      Déclaration à faire une seule fois en début de code, avec les autres déclarations
    • sChaineRemplace = Remplace(sLignelue,sCodebanque,"ML173")
      Le remplacement est fait, mais sLignelue n’est pas réinjectée dans le fichier
    • sChaineRemplace = Remplace(sLignelue,sRibInitial,nRib)
      Le remplacement est fait, mais sLignelue n’est pas réinjectée dans le fichier
    • Le fichier n’est pas fermé.
    • Si vous ne sauvegardez pas vos modifications, elles sont perdues. Of course.




    Je trouve qu’il serait plus simple de
    Faire une copie de sécurité du fichier
    Lire le fichier en une fois : fChargeTexte

    Ensuite
    Option 1 :
    Effectuer une recherche séquentielle de « ML123 » sur la chaîne globale avec PositionOccurence et les constantes RangPremierr, RangSuivant
    Opérer les modifications directement sur la chaîne en gérant les positions relatives à partir

    Option 2
    Remplir un tableau avec ChaineVersTableau
    Effectuer une recherche séquentielle sur le tableau avec TableauCherche et les constantes tcLinéairePremier et tcLinéaireSuivant, ou PositionOccurence avec les constantes RangPremierr, RangSuivant
    Opérer les modifications sur chaque ligne repérée
    Reconvertir le tableau en chaine avec TableauVersChaine

    Terminer en réécrivant le fichier

    Bon travail

    Hemgé

  12. #12
    Rédacteur/Modérateur

    Avatar de dsr57
    Homme Profil pro
    Analyste programmeur senior
    Inscrit en
    Octobre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste programmeur senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 139
    Points : 4 681
    Points
    4 681
    Billets dans le blog
    22
    Par défaut


    Le contenu du fichier (lignes correspondantes aux critères) est modifié par les fonctions Remplace()
    Une petite précision, la fonction Remplace remplace toutes les occurrences d'un mot présent dans une chaîne par un autre mot mais ne met pas à jour le contenu du fichier parcouru.

    ------------------------------------------------------------------------------------------------------------------------------------------
    Mon message vous a aidé, pensez à remercier . La discussion est résolue, n'oubliez pas le tag
    ------------------------------------------------------------------------------------------------------------------------------------------
    Site perso : Formation, Expérience, Réalisations, ...
    Blog : Le Blog de DSR57 - Programmation WinDev

  13. #13
    Membre confirmé Avatar de _shuriken_
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    543
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2006
    Messages : 543
    Points : 454
    Points
    454
    Par défaut
    Merci à vous,

    Après avoir prise en compte les remarques de Hemgé, voici le code :


    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    sLignelue est une chaîne
     
    nIdFichier est un entier
    nRib est une entier
    sRibInitial est une chaîne
    sCodebanque est une chaîne
    sCodeguichet est une chaîne
    sNumcompte est une chaîne
    //sContenu est une chaine
    Nbre est une chaîne = sCodeguichet+"43173"+sNumcompte
    xDividende est un numérique = 100*Val(Nbre)
    sChaineRemplace est une chaîne 
    resCopie est une chaîne
     
    //Sauvegarde du fichier avant modif
     
    resCopie = fCopieFichier(SC_SelecteurFichier1.SAI_FIC,"C:\Partage\SICA\BKP\")
     
    SI resCopie = Vrai ALORS
     
    	nIdFichier = fChargeTexte(SC_SelecteurFichier1.SAI_FIC,foLectureEcriture)
     
    	SI nIdFichier<>-1 ALORS
     
    		//----->On ne traite pas la première ligne
     
    			sLignelue = fLitLigne(nIdFichier)
     
    			//----->On récupère le contenu de la deuxième ligne
     
    			sLignelue = fLitLigne(nIdFichier)
     
    			sCodebanque = sLignelue[[119 sur 5]]
     
    			//POUR TOUTE CHAINE sLignelue DE sContenu
     
    			//FIN
     
    			TANTQUE sLignelue <>EOT
     
    				SI Contient(sCodebanque,"ML123") ALORS
     
    					//Algo Calcul de la nouvelle clé RIB en fonction du nouveau code Banque ML173
     
    					sCodeguichet = sLignelue[[124 sur 5]]
     
    					sRibInitial = sLignelue[[141 sur 2]]
     
    					sRibInitial = Val(sRibInitial)
     
    					sNumcompte = sLignelue[[129 sur 12]]	
     
    					nRib = modulo(xDividende,97)
     
    					//On remplace le M123 sur la ligne par ML173, idem pour la clé RIB
     
    					sChaineRemplace = Remplace(sLignelue,sCodebanque,"ML173")
     
    					sChaineRemplace = Remplace(sLignelue,sRibInitial,nRib)
     
     
    				FIN
     
    				sLignelue = fLitLigne(SC_SelecteurFichier1.SAI_FIC)
    			FIN
     
    			Info("Corrections opportées avec succès.","L'ancienne clé RIB est :"+sRibInitial+"La nouvelle clé RIB est :"+nRib)
    			fFerme(SC_SelecteurFichier1.SAI_FIC)
     
    		SINON
     
    			Erreur(ErreurInfo())
    		FIN
    FIN
     
     
    RAZ(SC_SelecteurFichier1)

    Par contre, l’exécution me renvoie cette erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Que s'est-il passé ?
    Constante invalide pour cette fonction.
    Consultez la documentation.
    "When you can measure what you are speaking about, and express it in numbers, you know something about it; but when you cannot measure it, when you cannot express it in numbers, your knowledge is of a meager and unsatisfactory kind; it may be the beginning of knowledge, but you have scarcely in your thoughts advanced to the state of Science, whatever the matter may be."

    Lord Kelvin - 1883.

  14. #14
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    Citation Envoyé par _shuriken_;8328726
    Par contre, l’exécution me renvoie cette erreur.

    [CODE
    Que s'est-il passé ?
    Constante invalide pour cette fonction.
    Consultez la documentation.[/CODE]
    Ouiiii ? Et ensuite ?
    Avez-vous cherché d'où pouvait venir cette erreur ?
    Outre que le message est certainement plus complet, il vous oriente clairement vers une fonction qui utilise une constante.

    Donc, c'est pas trop compliqué : on cherche les fonctions qui utilisent une constante dans le code et on trouve assez rapidement la ligne litigieuse.
    Sinon on peut aussi déboguer et exécuter pas à pas pour voir quand l'erreur survient.
    Donc, là, on compte sur vous.


    Pour le reste, vous êtes de bonne volonté mais pas consciencieux pour un sou !
    Dur, dur, mais gentiment écrit.

    Je vous renvoie en rouge à tout ce que vous avez laissé traîner dans le code et à l'absence évidente de lecture (ou de lecture attentive) de la doc sur les fonctions que vous utilisez.
    Ensuite, déboguez avant de revenir avec vos erreurs.

    Je vous garantis qu'on vous a tout donné.

    [QUOTE=_shuriken_;8328726]Merci à vous,

    Après avoir prise en compte les remarques de Hemgé, (Mouais ? dixit Hemgé très dubitatif) voici le code :


    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    sLignelue est une chaîne
    
    nIdFichier est un entier
    nRib est une entier
    sRibInitial est une chaîne
    sCodebanque est une chaîne
    sCodeguichet est une chaîne
    sNumcompte est une chaîne
    //sContenu est une chaine
    Nbre est une chaîne = sCodeguichet+"43173"+sNumcompte
    xDividende est un numérique = 100*Val(Nbre)
    
    sCodeGuichet et sNumcompte viennent d’être initialisé à ''
    Nbre vaudra donc vraisemblablement toujours 0, de même que xDividende
    
    sChaineRemplace est une chaîne 
    resCopie est une chaîne
    
    //Sauvegarde du fichier avant modif
    
    resCopie = fCopieFichier(SC_SelecteurFichier1.SAI_FIC,"C:\Partage\SICA\BKP\") 
    
    resCopie a été déclaré comme Chaîne et non comme Booléen, qui est le type du résultat <Vrai / Faux>  renvoyé par fcopie Fichier
    
    SI resCopie = Vrai ALORS
    		
    	nIdFichier = fChargeTexte(SC_SelecteurFichier1.SAI_FIC,foLectureEcriture)
    
    nIdFichier a été déclaré comme Entier et fChargeTexte renvoie une chaîne (vide en cas d’erreur, mais chaîne quand même)
    
    	SI nIdFichier<>-1 ALORS
    		
    		//----->On ne traite pas la première ligne
    			
    			sLignelue = fLitLigne(nIdFichier)
    
    si je vous a conseillé, avec frenchsting, d'utiliser fChargeTexte, c’est pour éviter fLitLigne		
             
    			//----->On récupère le contenu de la deuxième ligne
    		
    			sLignelue = fLitLigne(nIdFichier)
    		
    			sCodebanque = sLignelue[[119 sur 5]]
    		
    			//POUR TOUTE CHAINE sLignelue DE sContenu
    				
    			//FIN
    			
    			TANTQUE sLignelue <>EOT
    				
    				SI Contient(sCodebanque,"ML123") ALORS
    					
    					//Algo Calcul de la nouvelle clé RIB en fonction du nouveau code Banque ML173
    					
    					sCodeguichet = sLignelue[[124 sur 5]]
    					
    					sRibInitial = sLignelue[[141 sur 2]]
    					
    					sRibInitial = Val(sRibInitial)
    					
    					sNumcompte = sLignelue[[129 sur 12]]	
    					
    					nRib = modulo(xDividende,97)
    
    Comme xDividence vaudra toujours 0 (cft supra), nRib ne va pas beaucoup varier
    
    					//On remplace le M123 sur la ligne par ML173, idem pour la clé RIB
    					
    					sChaineRemplace = Remplace(sLignelue,sCodebanque,"ML173")
    					
    					sChaineRemplace = Remplace(sLignelue,sRibInitial,nRib)
    					
    Comme déjà signalé et également relevé par dsr57, sChaineRemplace contient sLigneLue après ses deux modifications par Remplace(), mais comme sChaineRemplce est ensuite abandonnée sur le champ de bataille sans autre forme de traitement, la modification n’est pas répercutée dans le fichier.					
    
    				FIN
    				
    				sLignelue = fLitLigne(SC_SelecteurFichier1.SAI_FIC)
    			FIN
    			
    			Info("Corrections opportées avec succès.","L'ancienne clé RIB est :"+sRibInitial+"La nouvelle clé RIB est :"+nRib)
    			fFerme(SC_SelecteurFichier1.SAI_FIC)
    			
    		SINON
    		
    			Erreur(ErreurInfo())
    		FIN
    FIN
    
    	
    RAZ(SC_SelecteurFichier1)
    Allez,
    1. lecture de la doc
    2. lecture des remarques et suggestions depuis le début de la discussion
    3. reprise réfléchie du code
    4. test
    5. retour ici avec [Résolu] (pourquoi pas ?) ou des questions pertinentes

    Bon courage

    Hemgé

  15. #15
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    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 202
    Points : 9 190
    Points
    9 190
    Par défaut
    +1 @ Hemgé concernant les erreurs.

    Regarde dans l'aide pour corriger celles-ci.

    Si je t'ai conseillé fchargetexte, c'est pour charger l'intégralité du fichier en mémoire et du coup, ne plus avoir les ralentissements dus aux E/S. Tu travailles dans ce cas avec tout ton fichier dans une chaîne de caractères.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  16. #16
    Membre confirmé Avatar de _shuriken_
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    543
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2006
    Messages : 543
    Points : 454
    Points
    454
    Par défaut
    Bonjour à tous,

    Merci Hemgé/frenchsting.

    Je pense que Hemgé perd patience avec moi ce qui est tout à fait normal. Pas la peine de préciser que je débute avec Windev donc, mais merci de prendre du temps pour me répondre .

    frenchsting, j'ai bien enlévé les fLitligne après le fChargeTexte, le mode debug me renvoie sur la ligne du fChargeTexte() justement en me retournant une variable(expression) que je n'utilise plus dans le code avec comme valeur : "L'expression n'est pas évaluable". Ci-jointe la capture Nom : Debug.png
Affichages : 343
Taille : 235,3 Ko

    Le code modifié :

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    sLignelue est une chaîne
     
    nIdFichier est une chaîne
    nRib est une entier
    sRibInitial est une chaîne
    sCodebanque est une chaîne
    sCodeguichet est une chaîne
    sNumcompte est une chaîne
    //sContenu est une chaine
    Nbre est une chaîne 
    xDividende est un numérique 
    sChaineRemplace est une chaîne 
    bResCopie est un booléen
     
    //Sauvegarde du fichier avant modif
     
    bResCopie = fCopieFichier(SC_SelecteurFichier1.SAI_FIC,"C:\Partage\SICA\BKP\")
     
    SI bResCopie = Vrai ALORS
     
    	nIdFichier = fChargeTexte(SC_SelecteurFichier1.SAI_FIC,foLectureEcriture)
     
    	SI nIdFichier<>-1 ALORS
     
    		//----->On ne traite pas la première ligne
     
    			//sLignelue = fLitLigne(nIdFichier)
     
    			//----->On récupère le contenu de la deuxième ligne
     
    			//sLignelue = fLitLigne(nIdFichier)
     
    			sCodebanque = sLignelue[[119 sur 5]]
     
    			//POUR TOUTE CHAINE sLignelue DE sContenu
     
    			//FIN
     
    			TANTQUE sLignelue <>EOT
     
    				SI Contient(sCodebanque,"ML123") ALORS
     
    					//Algo Calcul de la nouvelle clé RIB en fonction du nouveau code Banque ML173
     
    					Nbre = sCodeguichet+"43173"+sNumcompte
     
    					xDividende = 100*Val(Nbre)
     
    					sCodeguichet = sLignelue[[124 sur 5]]
     
    					sRibInitial = sLignelue[[141 sur 2]]
     
    					sRibInitial = Val(sRibInitial)
     
    					sNumcompte = sLignelue[[129 sur 12]]	
     
    					nRib = modulo(xDividende,97)
     
    					//On remplace le M123 sur la ligne par ML173, idem pour la clé RIB
     
    					sChaineRemplace = Remplace(sLignelue,sCodebanque,"ML173")
     
    					sChaineRemplace = Remplace(sLignelue,sRibInitial,nRib)
     
     
    				FIN
     
    				sLignelue = fLitLigne(SC_SelecteurFichier1.SAI_FIC)
    			FIN
     
    			Info("Corrections opportées avec succès.","L'ancienne clé RIB est :"+sRibInitial+"La nouvelle clé RIB est :"+nRib)
    			fFerme(SC_SelecteurFichier1.SAI_FIC)
     
    		SINON
     
    			Erreur(ErreurInfo())
    		FIN
    FIN
     
     
    RAZ(SC_SelecteurFichier1)
    "When you can measure what you are speaking about, and express it in numbers, you know something about it; but when you cannot measure it, when you cannot express it in numbers, your knowledge is of a meager and unsatisfactory kind; it may be the beginning of knowledge, but you have scarcely in your thoughts advanced to the state of Science, whatever the matter may be."

    Lord Kelvin - 1883.

  17. #17
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Comme tu débutes, je te conseille fortement de lire l'aide en ligne des fonctions que tu utilises.
    Elle contient des exemples d'utilisation dont tu peux t'inspirer.
    Tu as aussi le guide d'auto-formation qui est bien fait.

    Pour finir tu as le mode débug (que tu sembles utiliser): regarde bien ce que renvoie les fonctions, et ce que tu en fais.

    Un petit indice: il y a une grosse incohérence ligne 21. Que dit l'aide en ligne de cette fonction ? Qu'est-ce que tu fais dans ton code ? Qu'est-ce qui diffère entre l'aide en ligne et ton code ?

    Tatayo.

  18. #18
    Membre confirmé Avatar de _shuriken_
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    543
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2006
    Messages : 543
    Points : 454
    Points
    454
    Par défaut
    Merci du conseil tatayo,

    j'ai été parachuté par le service dans le dev Windev (Ingé Système à la base), on m'a mis dans des projets de ce genre pour que j'assimile avant d'être sur de gros. Je suis régulièrement les Webinars et je lis (tant que je peux) les manuels d'auto-formation.

    Alors, concernant :
    Citation Envoyé par tatayo Voir le message
    il y a une grosse incohérence ligne 21. Que dit l'aide en ligne de cette fonction ? Qu'est-ce que tu fais dans ton code ? Qu'est-ce qui diffère entre l'aide en ligne et ton code ?

    Tatayo.
    J'ai un sélecteur de fichier, dans lequel je charge le fichier dans ma variable avec fChargeTexte() en mode read/write.

    Par contre dans l'aide, fChargetexte() prend comme paramètre le nom et chemin du fichier (ce que j'ai déjà dans mon sélecteur).
    "When you can measure what you are speaking about, and express it in numbers, you know something about it; but when you cannot measure it, when you cannot express it in numbers, your knowledge is of a meager and unsatisfactory kind; it may be the beginning of knowledge, but you have scarcely in your thoughts advanced to the state of Science, whatever the matter may be."

    Lord Kelvin - 1883.

  19. #19
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Je viens de relire ton code, et le préfixe m'a induit en erreur. nIdFichier est une chaine (alors que le nom indique qu'il s'agit d'un entier...).

    Bref, passons.

    A la ligne suivante, tu compares nIdFichier (qui devrait être renommée) avec -1. Est-ce cohérent avec l'aide en ligne de fChargeTexte() ?(la réponse est non).

    Pour te faire avancer, je te propose de regarder l'aide en ligne de POUR TOUT, tu as un exemple qui va bien.

    Tatayo.

  20. #20
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    Bonjour

    Non, non, Hemgé ne perd pas encore patience.

    Mais je voulais vous amener à une démarche plus autoformatrice qui vous permette de réussir un bout de code non pas par hasard et surtout grâce à notre guidage de vos tâtonnements, mais plutôt par l’apprentissage progressif à partir de vos erreurs.
    Une erreur rencontrée et corrigée sur base de la lecture de la doc devient un paquet de connaissance acquise et une appropriation de « l’univers Windev ».

    En vous répondant :
    Avez-vous cherché d'où pouvait venir cette erreur ?
    Outre que le message est certainement plus complet, il vous oriente clairement vers une fonction qui utilise une constante.

    Donc, c'est pas trop compliqué : on cherche les fonctions qui utilisent une constante dans le code et on trouve assez rapidement la ligne litigieuse.
    Je vous invitais à rechercher les fonctions que vous utilisiez et parmi celles-là, celle qui utilisait une constante, pour vous permettre de trouver l’erreur.
    L’avez-vous fait ? Apparemment non.

    Alors pourquoi ?
    Savez-vous ce qu’est une fonction Windev (sinon voir la doc) ?
    Savez-vous ce qu’est une constante et ce qu’est une constante dans le cadre des fonctions Windev ?
    Ceci est peut-être plus spécifique, mais si vous lisez la doc sur les fonctions que vous utilisez, il y en a plusieurs qui utilisent des ‘constantes’ d’après la doc.
    Et l’erreur que vous aviez relevait une constante invalide pour cette fonction.

    Sur ce point, il y aurait lieu de perdre patience. (aurait, au conditionnel, donc on n'a pas perdu patience)
    @ tatayo l'erreur subsiste et la ligne "nn" ne passera pas ("nn" à identifer par _shuriken_ )

    Autre chose : fLitLigne()
    frenchsting et moi-même vous avons conseillé de recourir à fChargeTexte.
    Je vous ai écrit :
    si je vous a conseillé, avec frenchsting, d'utiliser fChargeTexte, c’est pour éviter fLitLigne.
    Et on le retrouve encore dans votre code.

    Normalement, une lecture attentive de la doc aurait dû vous permettre de comprendre que fLitLigne n’avait plus lieu d’être utilisé.
    Eventuellement, une recherche sur le forum peut aider à mieux comprendre les notions de la doc.
    frenchsting vous a donné l’explication dans son dernier message.
    Si je t'ai conseillé fchargetexte, c'est pour charger l'intégralité du fichier en mémoire et du coup, ne plus avoir les ralentissements dus aux E/S. Tu travailles dans ce cas avec tout ton fichier dans une chaîne de caractères.
    Je crois aussi que vous devriez reprendre cotre code en renommant les variables en fonction de leur utilisation réelle, qui a fortement évolué depuis le début.
    On ne peut que rencontrer des problèmes quand une variable nIdFichier
    • n’est plus un numérique mais une chaîne alors qu’elle est restée préfixée comme un entier (le n de nIdFichier), ce qui a notamment induit tatayo en erreur lorsqu'il a soulevé la grosse incohérence de la ligne 21.
    • ne désigne plus le numéro ou l’identifiant d’un fichier dans les traitements
    • mais bien le contenu de l’entièreté du fichier.


    Pour essayer de vous aider à avoir une vue d'ensemble, voilà ce vers quoi nous vous amenons :
    1. charger votre fichier en bloc sous forme d'une grande chaîne : fChargeTexte
    2. faire le traitement répétitif, sur la chaîne globale découpée par POUR TOUT (instruction de parcours) ou sur la chaîne convertie en tableau (qu'on va aussi parcourir)
    3. sauvegarder le résultat (ce que vous ne faites toujours pas et si vous n'écrivez pas votre résultat dans le fichier, il ne sera pas modifié par l'intervention du Saint Esprit. Oh non !)

    Allez, il y a foule à vos côtés. Presque autant de fans qu'au Tour. Dépêchez-vous parce qu'il s'achève bientôt !!

    Hemgé

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/11/2010, 21h20
  2. Traitement fichier texte
    Par devoluti0n dans le forum Débuter
    Réponses: 21
    Dernier message: 29/09/2007, 13h45
  3. Manipulation de fichiers textes - fonction
    Par kromartien dans le forum C
    Réponses: 2
    Dernier message: 11/06/2007, 00h02
  4. Traitement fichier texte
    Par spy666ne dans le forum C++
    Réponses: 1
    Dernier message: 30/03/2007, 13h05
  5. [PERL] traitement fichier texte
    Par osiris73 dans le forum Langage
    Réponses: 10
    Dernier message: 05/05/2006, 20h06

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