Manipulation de colonnes dans un fichier texte sans caractere separateur....

Résolu
rico350 Messages postés 7 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 18 avril 2005 - 19 nov. 2004 à 21:32
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 ?!...

11 réponses

cs_Cracker Messages postés 82 Date d'inscription dimanche 9 septembre 2001 Statut Membre Dernière intervention 21 août 2006
19 nov. 2004 à 21:42
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
3
rico350 Messages postés 7 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 18 avril 2005
19 nov. 2004 à 21:39
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...
0
rico350 Messages postés 7 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 18 avril 2005
19 nov. 2004 à 21:42
Bon grosso modo c'est ca :

aaaaaa___cccccc___eeeee__ggggg
__aaaabbbccccc______eee___ggg__
______b_b______ddd_eeefff_____

ici le "_" remplace un espace
0
cs_Cracker Messages postés 82 Date d'inscription dimanche 9 septembre 2001 Statut Membre Dernière intervention 21 août 2006
19 nov. 2004 à 22:23
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
19 nov. 2004 à 22:25
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é
0
rico350 Messages postés 7 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 18 avril 2005
20 nov. 2004 à 00:36
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)
0
gandalflegris007 Messages postés 211 Date d'inscription lundi 31 mars 2003 Statut Membre Dernière intervention 11 juin 2007
20 nov. 2004 à 11:14
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
0
gandalflegris007 Messages postés 211 Date d'inscription lundi 31 mars 2003 Statut Membre Dernière intervention 11 juin 2007
20 nov. 2004 à 11:17
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
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
20 nov. 2004 à 11:22
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é
0
rico350 Messages postés 7 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 18 avril 2005
21 nov. 2004 à 13:18
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.
0
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
Mais l'espace entre tes colonnes EST un séparateur ...
0
Rejoignez-nous