Fichier text

Le
Fournier Raymond
Bonjour a tous,
Je voudrais savoir s'il est possible de modifier une ligne d'un
fichier texte, sans le ré - écrire au complet le fichier.


Merci. Raymond Fournier
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
ng
Le #14735841
Non. Il faudra forcément le relire et réécire en entier.
On peut par contre le faire en mode binaire (avec un split) car c'est très
très rapide.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Fournier Raymond
Bonjour a tous,
Je voudrais savoir s'il est possible de modifier une ligne d'un
fichier texte, sans le ré - écrire au complet le fichier.


Merci. Raymond Fournier


François Picalausa
Le #14735831
Hello,

Le file mapping permet apparement de travailer sur de petites zones d'un
fichier et est encore plus rapide.
Mais il faut déjà que le fichier soit conséquent pour préférer cette
technique...
Pour plus d'info sur le file mapping, google groups, il y a quelques liens
dans les archives :-)

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"ng" news:
Non. Il faudra forcément le relire et réécire en entier.
On peut par contre le faire en mode binaire (avec un split) car c'est
très très rapide.


Bonjour a tous,
Je voudrais savoir s'il est possible de modifier une ligne d'un
fichier texte, sans le ré - écrire au complet le fichier.


Merci. Raymond Fournier




Fournier Raymond
Le #14735821
"ng" news::

Non. Il faudra forcément le relire et réécire en entier.
On peut par contre le faire en mode binaire (avec un split) car c'est
très très rapide.




Merci. Raymond Fournier
pierfrene
Le #14735751
Si ton fichier text est monter avec des champs
moi je le fait comme suit
J'éspère que je n'est pas fait d'erreur ;o)

'******
Module
'******
Public Ma_Base As Ma_Base_Type

Type Ma_Base_Type
ID As Integer
Nom As String *25
Prénom As String *25
Age As integer
End Type

'********
'Form.
'********
'Tu ouvre ton Fichier Texte Tu recherche la ligne que tu veut Modifier
'Une Fois que tu a Trouvé le numéro tu Récrie seulement Cette ligne


Private Sub Modifie_Ligne_Click()

Dim FileNum
Dim RecLength
Dim MaxSize, T
Dim Position

'::Ouvre le Fichier Texte:.
Open "C:MonFichierTexte.txt" For Random As FileNum Len = Reclength
MaxSize = LOF(FileNum) Len (Ma_Base)

For T = MaxSize To Step - 1 '::Cherche le nombre de ligne dans le fichier
Text:.
Seek #1, T '::T Donne le nombre
d'enregistrement dans la base de donnée:.
Get#1, , RecLength
Next T


For i = 1 to T '::Passe la base de donnée au peigne fin.
Get FileNum, Position, Ma_Base ' ::Lecture de la base de donnée::
If Ma_Ligne_a_Changer.text = Ma_Bas.Nom Then '::Condition ici on
cherche un Nom a modifier:.
'::Une fois que la recherche a été concluante qu'ont a trouver la
ligne a changer:.
Position = Ma_Base.ID ':: ici ont dit que Position est égale au numéro
d'ID qui nous donne le numéro de la ligne:.

With Ma_Base ':: Dans des TextBox on entre les nouvelle
donnée:.
.ID = Position
.Nom = TextBox1.Text
.Prenom = TextBox.Text
.Age = TextBox.text
End With

Put FileNum, Position.Ma_Base '::Écrie la ligne dans la bas de donnée
End If
Next i

End Sub


"Fournier Raymond" message de news:
Bonjour a tous,
Je voudrais savoir s'il est possible de modifier une ligne d'un
fichier texte, sans le ré - écrire au complet le fichier.


Merci. Raymond Fournier


ng
Le #14735681
Salut,

Oui mais on parlait d'un fichier texte simple, on ne connait pas la
localisation de la ligne (sinon une ouverture binaire pourrait résoudre le
problème). Il faut donc examiner chaque ligne pour voir s'il est correspond
à celle voulue. Si on connaissait le numéro de ligne il en serait de même
(Open as Binary + Split...).

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

pierfrene
Si ton fichier text est monter avec des champs
moi je le fait comme suit
J'éspère que je n'est pas fait d'erreur ;o)

'******
Module
'******
Public Ma_Base As Ma_Base_Type

Type Ma_Base_Type
ID As Integer
Nom As String *25
Prénom As String *25
Age As integer
End Type

'********
'Form.
'********
'Tu ouvre ton Fichier Texte Tu recherche la ligne que tu veut Modifier
'Une Fois que tu a Trouvé le numéro tu Récrie seulement Cette ligne


Private Sub Modifie_Ligne_Click()

Dim FileNum
Dim RecLength
Dim MaxSize, T
Dim Position

'::Ouvre le Fichier Texte:.
Open "C:MonFichierTexte.txt" For Random As FileNum Len = Reclength
MaxSize = LOF(FileNum) Len (Ma_Base)

For T = MaxSize To Step - 1 '::Cherche le nombre de ligne dans le
fichier Text:.
Seek #1, T '::T Donne le nombre
d'enregistrement dans la base de donnée:.
Get#1, , RecLength
Next T


For i = 1 to T '::Passe la base de donnée au peigne fin.
Get FileNum, Position, Ma_Base ' ::Lecture de la base de donnée::
If Ma_Ligne_a_Changer.text = Ma_Bas.Nom Then '::Condition ici
on cherche un Nom a modifier:.
'::Une fois que la recherche a été concluante qu'ont a
trouver la ligne a changer:.
Position = Ma_Base.ID ':: ici ont dit que Position est égale au
numéro d'ID qui nous donne le numéro de la ligne:.

With Ma_Base ':: Dans des TextBox on entre les nouvelle
donnée:.
.ID = Position
.Nom = TextBox1.Text
.Prenom = TextBox.Text
.Age = TextBox.text
End With

Put FileNum, Position.Ma_Base '::Écrie la ligne dans la bas de donnée
End If
Next i

End Sub


"Fournier Raymond" dans le message de
news:
Bonjour a tous,
Je voudrais savoir s'il est possible de modifier une ligne d'un
fichier texte, sans le ré - écrire au complet le fichier.


Merci. Raymond Fournier




pierfrene
Le #14735621
Sa ma prendras a ne pas lire la question comme il faut :o

"ng" news:
Salut,

Oui mais on parlait d'un fichier texte simple, on ne connait pas la
localisation de la ligne (sinon une ouverture binaire pourrait résoudre le
problème). Il faut donc examiner chaque ligne pour voir s'il est


correspond
à celle voulue. Si on connaissait le numéro de ligne il en serait de même
(Open as Binary + Split...).

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/



Christophe
Le #14650891
Bonjour,

Lecture très interressante, de plus un objet de mapping de fichier peut être
couplé avec CreateDIBsection ce qui permet en terme de traitement d'image
donner des choses très rapides sur de gros bitmaps.
Sous XP uniquement la fonction createdibsection étant qq peu "limitée" sous
98.

Christophe Vergon

"François Picalausa" #
Hello,

Le file mapping permet apparement de travailer sur de petites zones d'un
fichier et est encore plus rapide.
Mais il faut déjà que le fichier soit conséquent pour préférer cette
technique...
Pour plus d'info sur le file mapping, google groups, il y a quelques liens
dans les archives :-)

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"ng" news:
> Non. Il faudra forcément le relire et réécire en entier.
> On peut par contre le faire en mode binaire (avec un split) car c'est
> très très rapide.
>
>
>> Bonjour a tous,
>> Je voudrais savoir s'il est possible de modifier une ligne d'un
>> fichier texte, sans le ré - écrire au complet le fichier.
>>
>>
>> Merci. Raymond Fournier




Publicité
Poster une réponse
Anonyme