Aller au contenu
Zebulon
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

[Résolu] - [VB Express 2005] Mise en forme de fichier texte


Raphdu01

Messages recommandés

  • Modérateurs

[…]
imax = UBound(tent) - LBound(tent) + 1
For i = 0 To imax - 2
[…]

Juste un détail qui m'intrigue. Je comprends bien la première ligne, qui donne le nombre imax de postes de la table. Pour la seconde ligne, en allant de 0 à imax-2, ta boucle ne s'occupera que des imax-1 premiers postes de la table. Pourquoi ne pas traiter le dernier poste ?

 

Tu pourrais d'ailleurs écrire tout simplement :

imax = UBound(tent) - LBound(tent)
For i = 0 To imax

Lien vers le commentaire
Partager sur d’autres sites

Seul petit hic : ça me saute une ligne dans le fichier à chaque fois que je change de ligne dans le tableau :P

 

Au départ j'avais juste for i=0 to imax et dès que je copiant une ligne du premier fichier dans le deuxième, ça me sautait une ligne ! J'avait donc 3 lignes de données, une ligne vide, 3 lignes de données, une ligne vide... Donc au hasard j'ai mis imax-1 et ça ne sautait plus de ligne donc je n'ai pas cherché plus loin. :P

 

Eventuellement je pourrait écrire :

 

[…]
imax = UBound(tent) - LBound(tent)
For i = 0 To imax - 1
[…]

 

Je suis bien obligé de laisser -1 car si le tableau contient 3 éléments (imax=3), ils sont indicés de 0 à 2, d'où le imax-1... Le dernier n'est pas oublié.

Lien vers le commentaire
Partager sur d’autres sites

  • Modérateurs

Pas tout à fait. En effet, je peux raisonnablement supposer que UBound(tent) identifie le rang du dernier poste de la table, et LBound(tent) celui du premier poste.

Ainsi, le nombre de postes de la table est bien imax = UBound(tent) - LBound(tent) +1.

Et, si le premier indice de la table est 0, le dernier sera imax - 1.

 

[…]
imax = UBound(tent) - LBound(tent) + 1
For i = 0 To imax - 1
[…]

Ceci dit, si tu estimes avoir tous tes renseignements en t'arrêtant un rang avant, pas de problème :P

Lien vers le commentaire
Partager sur d’autres sites

  • Modérateurs

OK. J'ai capté. En fait, tu dois effectuer une lecture « brute » de ton enregistrement, qui se termine par un drapeau de fin, genre « 0A0D » (line feed/carriage return). Et c'est ce drapeau de fin qui est rangé dans le dernier poste de la table tent. Si tu le prends en compte, il te génère effectivement une ligne « blanche » dans ton fichier de sortie. CQFD :P

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...