Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Fichier text

7 réponses
Avatar
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

7 réponses

Avatar
ng
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 <duracelle(Enlever-ceci)@sympatico.ca> a écrit :

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


Avatar
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" a écrit dans le message de
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




Avatar
Fournier Raymond
"ng" wrote in
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
Avatar
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" <duracelle(Enlever-ceci)@sympatico.ca> a écrit 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


Avatar
ng
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 <moldry@(supprimerceci)hotmail.com> a écrit :

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" <duracelle(Enlever-ceci)@sympatico.ca> a écrit
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




Avatar
pierfrene
Sa ma prendras a ne pas lire la question comme il faut :o

"ng" a écrit dans le message de
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/



Avatar
Christophe
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" a écrit dans le message de news:
#
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" a écrit dans le message de
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