Inserer une chaine dans un fichier text

Résolu
cs_lemagicien Messages postés 95 Date d'inscription samedi 29 décembre 2001 Statut Membre Dernière intervention 10 novembre 2004 - 30 oct. 2004 à 00:31
cs_lemagicien Messages postés 95 Date d'inscription samedi 29 décembre 2001 Statut Membre Dernière intervention 10 novembre 2004 - 1 nov. 2004 à 12:29
Voila mon problème:

J'ai un fichier text avec des données (chaine);

exemple

------------------------------------------------------------------
Nom: Prénom: Né le:
------------------------------------------------------------------
123456789....... (positions)

Et je voudrais inclure des chaines sans écraser ce qui il y a deja dans le fichier.

j'ai une Form avec par exemple 3 zones de text dans lesquels j'écrit le nom le prenom et la date de naissance.

Avec la methode sequencielle je pense pas que l'on puisse selectionner un endroit dans le fichier pour y écrire.

Avec le mode aleatoire il insert un caractere special au debut de chaque enregistrement.

Et avec le mode binary (je reprend l exemple) si j'ecrit la chaine

"Dupont" a la position 6 dans le fichier voila le resultat

------------------------------------------------------------------
Nom: Duponténom: Né le:
------------------------------------------------------------------
123456789....... (positions)

J'aimerais écrire et que le text qui se trouve apres la position ou j ecrit se décale automatiquement (un peu comme dans un traitement de text)

C'est possible en VB6????

Merci

Lemagicien

27 réponses

cs_lemagicien Messages postés 95 Date d'inscription samedi 29 décembre 2001 Statut Membre Dernière intervention 10 novembre 2004
31 oct. 2004 à 22:55
Une solution bcp plus rapide ,mais moin souple au niveau de l'utilisation, serait de prevoir l'espace dans le fichier.

je m'explique:

si on a par exemple:

---------------------------------
Nom: Prénom: Date:
---------------------------------

on pourait déterminer a l'avance la longueur de chaque chaine.

---------------------------------------------
Nom: Prénom: Date:
---------------------------------------------

voila ici j ai laissé un espace de 10 caractere pour le nom
10 caracteres pour le prenom etc...

Ensuite il suffit de déclarer les chaine avec une longueur bien definie

Exemple
dim strTemp as string*10  'pour une chaine de 10 caractere


Pour la lecture en binaire:

'Lire des données dans un fichier binaire

Private Sub Command1_Click()

Dim srtChaine1 as string*10
Dim srtChaine2 as string*4

intNum = FreeFile 'un numero de fichier libre

Open "c:/fichier.txt" For Binary As #intNum 'ouverture du fichier

'lire les 10 caracteres a partire de la  position 1

Get #intNum, 1, srtchaine1 
Text1.Text = strChaine1

'lire les 4 caracteres a partire de la  position 15

Get #intNum, 15, strChaine2
Text2.Text = Chaine2

Close #intNum

intMsg = MsgBox("Lecture terminée!")

End Sub


Meme chose pour l ecriture

'Ecrire des données dans un fichier binaire

Private Sub Command2_Click()

Dim srtChaine1 as string*10
Dim srtChaine2 as string*4

intNum = FreeFile 'un numero de fichier libre

Open "c:/fichier.txt" For Binary As #intNum 'ouverture du fichier

'Ecrire les 10 caracteres a partir de la  position 1

strChaine1 = Text1.Text
Put #intNum, 1, srtchaine1 

'Ecrit les 4 caracteres a partir de la  position 15

strChaine2 = Text2.Text

Put #intNum, 15, strChaine2

Close #intNum

intMsg = MsgBox("Ecriture terminée!")

End Sub


Mais si il y a des donnée entre la position 1 et 11 ainsi que la position 15 et 19 elles seront écrasée d'où l'importance de prévoir les espaces dans le fichier.

Lemagicien
0
cs_lemagicien Messages postés 95 Date d'inscription samedi 29 décembre 2001 Statut Membre Dernière intervention 10 novembre 2004
31 oct. 2004 à 23:00
Encore une autre solution. (oui ca fume en se moment :) )

On pourait découper le fichier text en plusieur morceau.
Et ecrire le bloc 1 , ecrire la chaine 1, ecrire le bloc 2 ,ecrire la chaine 2, etc...

mais cela suppose que l'on connaisse la configuration du fichier avant.
Lemagicien
0
cs_lemagicien Messages postés 95 Date d'inscription samedi 29 décembre 2001 Statut Membre Dernière intervention 10 novembre 2004
31 oct. 2004 à 23:01
MadM@tt pour ton idée de lire tout le fichier en une seul fois je vois pas trop comment pourais tu m'expliquer?

merci

Lemagicien
0
cs_lemagicien Messages postés 95 Date d'inscription samedi 29 décembre 2001 Statut Membre Dernière intervention 10 novembre 2004
31 oct. 2004 à 23:20
lol on a repondu en meme temps :p
Lemagicien
0

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

Posez votre question
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
31 oct. 2004 à 23:24
Oui mais je crois que tu a des techniques en VBScript qui sont plus rapides, mais je ne suis pas sur

MadMatt
0
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
31 oct. 2004 à 23:30
Euh... Est tu sur que c'est pas le fait d'afficher le contenu de la variable dans une textbox qui ralentisse autant le truc, essaye d'enlever la ligne :
Text1.Text = strValeur 'optionnel
et regarde si c'est plus rapide (pour les 15Mo)

MadMatt
0
cs_lemagicien Messages postés 95 Date d'inscription samedi 29 décembre 2001 Statut Membre Dernière intervention 10 novembre 2004
1 nov. 2004 à 12:24
oui c est pour ca que j ai ecrit optionnel a coté ;)
Lemagicien
0
Rejoignez-nous