Manipulation de colonnes dans un fichier texte sans caractere separateur.... [Résolu]

Messages postés
7
Date d'inscription
vendredi 19 novembre 2004
Statut
Membre
Dernière intervention
18 avril 2005
- - Dernière réponse : gandalflegris007
Messages postés
211
Date d'inscription
lundi 31 mars 2003
Statut
Membre
Dernière intervention
11 juin 2007
- 22 nov. 2004 à 09:13
J'ai un fichier texte formaté de la façon suivante (il ne comporte que des caractères alphanumérique et des espaces) :

---
aaaaaa ccccccc eeeee ggggg
aaaaaabbbccc cc eee ggg
b b dddd eeefff
---

Il est donc composé d'un certain nombre de ligne composé de "colonne".
La largeur des colonnes est fixe (la colonne 1 fait 6 caractères, la colonne 2 fait 3 caractères,etc...).
Pas de caractères séparateur entre les colonnes.
Une colonne de capacité 6 caracteres peut en comporter 6 ou moins voir 0 (que des espaces).

Savez vous si je peut de manipuler les "colonnes". Par exemple, inverser les données des colonnes 4 et 6 sans trop de code ?

sinon y a peut etre un soft qui existe pour cela ?!...
Afficher la suite 

11 réponses

Meilleure réponse
Messages postés
82
Date d'inscription
dimanche 9 septembre 2001
Statut
Membre
Dernière intervention
21 août 2006
3
Merci
Il suffit de faire une boucle en partant de la fin de chak colonne

For I = len(chaine) to 1
chaine2=chaine2 & chaine
Next i

DarkSpirit

Chef du projet CDD, www.chroniquedesdamnes.fr.st

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 198 internautes nous ont dit merci ce mois-ci

Messages postés
7
Date d'inscription
vendredi 19 novembre 2004
Statut
Membre
Dernière intervention
18 avril 2005
0
Merci
cela ne se voit pas dans mon poste precedent a cause du forum, mais je reprise bien que la largeur des colonnes est fixe (la colonne 1 fait 6 caractères, la colonne 2 fait 3 caractères,etc...) meme en l'absence de caracteres.... j'sais pas si j'suis clair...
Messages postés
7
Date d'inscription
vendredi 19 novembre 2004
Statut
Membre
Dernière intervention
18 avril 2005
0
Merci
Bon grosso modo c'est ca :

aaaaaa___cccccc___eeeee__ggggg
__aaaabbbccccc______eee___ggg__
______b_b______ddd_eeefff_____

ici le "_" remplace un espace
Messages postés
82
Date d'inscription
dimanche 9 septembre 2001
Statut
Membre
Dernière intervention
21 août 2006
0
Merci
Heu, je me sui planté c ca, plutot :

    For I = Len(Chaine) To 1 Step -1
        Chaine2 = Chaine2 & Mid(Chaine, I, 1)
    Next I


DarkSpirit

Chef du projet CDD, www.chroniquedesdamnes.fr.st
Messages postés
936
Date d'inscription
lundi 19 janvier 2004
Statut
Membre
Dernière intervention
17 mars 2017
3
0
Merci
si ton nombre de colonne et fixe tu peux utiliser la fonction TYPE pour fichiers séquentiels.

Type MonType
   Colonne1 as string *7 '6 + l'espace
   Colonne2 as string *4 '3 + l'espace
   etc......
End Type


Pour acceder aux données tu fais
 Get #1, index,MonType

index et la position dans ton fichier si tes colonnes ne se répettent pas il est égal à 1

toutes tes variables seront chargées, et tu pourras les manipulées

pour écrire ton fichier c'est
 Put #1, index,MonType



_______________________________________

Jean-Paul

Le Savoir n'a de valeur que s'il est partagé
Messages postés
7
Date d'inscription
vendredi 19 novembre 2004
Statut
Membre
Dernière intervention
18 avril 2005
0
Merci
Merci pour votre aide!

J'ai reussi a faire ce que je voulais.

Pour info, j'ai utilisé :

For i = 1 To Len(myligne)
moncar = Mid(myligne, I, 1)
myligne2= myligne2 & moncar
next

ensuite, j'ai pu insérer un caractere separateur et utiliser split !

Merci encore :big)
Messages postés
211
Date d'inscription
lundi 31 mars 2003
Statut
Membre
Dernière intervention
11 juin 2007
0
Merci
Salut rico350,

je ne comprends pas bien ton exemple ?
en gros tu récupères tes caractères un a un et tu les colles dans ta ligne, ça revient au même que myligne2=myligne

si ton objetif était uniquement d'insérer un séparateur pour y faire un split derrière il y a la fontion replace sur le texte.
> replace myligne(" ";";")
00000000 11111111 22222222 devient 00000000;11111111;22222222
ensuite ton split sur ";" devient basique ...

Guich
Messages postés
211
Date d'inscription
lundi 31 mars 2003
Statut
Membre
Dernière intervention
11 juin 2007
0
Merci
Salut rico350,

je ne comprends pas bien ton exemple ?
en gros tu récupères tes caractères un a un et tu les colles dans ta ligne, ça revient au même que myligne2=myligne

si ton objetif était uniquement d'insérer un séparateur pour y faire un split derrière il y a la fontion replace sur le texte.
> replace myligne(" ";";")
00000000 11111111 22222222 devient 00000000;11111111;22222222
ensuite ton split sur ";" devient basique ...

Guich
Messages postés
936
Date d'inscription
lundi 19 janvier 2004
Statut
Membre
Dernière intervention
17 mars 2017
3
0
Merci
oui et encore plus simple le caractère par défaut de split et l'espace donc même pas la peine de faire replace
_______________________________________

Jean-Paul

Le Savoir n'a de valeur que s'il est partagé
Messages postés
7
Date d'inscription
vendredi 19 novembre 2004
Statut
Membre
Dernière intervention
18 avril 2005
0
Merci
il n'y a pas de caractere separateur entre mes colonnes, donc je reprend les caracteres un par un, je les mets dans myligne2, et j'ajoute le caractere ";" si je me trouve dans les positions val1, val2, val3,etc... sur ma ligne (la largeur des colonnes est fixe) :

For i = 1 To Len(myligne)
moncar = Mid(myligne, I, 1)
myligne2= myligne2 & moncar

if ( i=val1 or i=val2 or i=val3 or i=val4 or i=val5 or i=val6 or i=val7 or i=val8 or i=val9) then
myligne2= myligne2 & ";"
end if
Next

ensuite je travaille sur un fichier avec un caractere separateur et donc j'utilise split.
Messages postés
211
Date d'inscription
lundi 31 mars 2003
Statut
Membre
Dernière intervention
11 juin 2007
0
Merci
Mais l'espace entre tes colonnes EST un séparateur ...