Solution pour supprimer enregistrement fichier acces direct

Signaler
Messages postés
561
Date d'inscription
samedi 10 janvier 2004
Statut
Membre
Dernière intervention
11 octobre 2010
-
Messages postés
165
Date d'inscription
mardi 7 mars 2006
Statut
Membre
Dernière intervention
24 avril 2018
-
Bonjour,
J'ai lu des les forums qu'on ne pouvait pas supprimer un enregistrement à acces direct sans recréer un fichier, effacer l'original puis renomer le fichier temporaire. Je suis d'accord. Mais est t'il possible de réécrire tout directement dans le fichier original sans l'enregistrement supprimé? J'ai l'habitude avec les fichiers à accès séquentiel de le faire, je me demandais si cétait possible avec les fichiers à acces direct car dans un fichier à accès sequentiel chaque réécriture dans le fichier supprime auparavant tout son contenu.


Merci

3 réponses

Messages postés
165
Date d'inscription
mardi 7 mars 2006
Statut
Membre
Dernière intervention
24 avril 2018

sous VB.net je sais qu'il y a des petits "trucs" bizarres concernant les fichiers à accès direct. (pb de longueur des enregistrements notamment)
mais ceci dit, sous les VB précédents, tous les fichiers à accès directs fonctionnent sur le même principe, et en VB.Net aussi (normalement) hormis le nouveau vocabulaire:

exemple:
FileOpen(1,

"C:\direct.txt", OpenMode.Random)   'pour ouvrir un fichier nommé direct.txt en mode direct, avec comme nom raccourci 1'

FilePut(1,
"ECRIRE", 5)   'pour écrire dans le fichier noté 1, à la ligne 5, le nom ECRIRE'FileGet(1, enr, 5)     'pour lire dans le fichier noté1, à la ligne 5, une valeur que l'on va stocker dans une variable appelée enr;  on trouvera donc "ECRIRE" dans la variable enr'

FileClose(1)    'pour fermer le fichier noté1'

Donc en théorie, si tu veux supprimer ce qui est stocker à la ligne 5, tu devras écrire:

FileOpen(1,

"C:\direct.txt", OpenMode.Random)
FilePut(1,

"", 5)FileClose(1)

Voilà !!!

PS: ceci dit, il est vrai que si tu crées un fichier direct conportant 50 lignes, et que tu n'en veux plus que 49, il te faudra réécrire tout ton fichier dans un nouveau. Mais le fait d'avoir trop de ligne est moins gènant que d'en avoir pas assez !!!!
Il est plus facile en prog de dire 'saute la ligne 32' par exemple !!! 

Comprend vite mais il faut lui expliquer longtemp et tout en détail !!!
Messages postés
12
Date d'inscription
lundi 9 juin 2008
Statut
Membre
Dernière intervention
2 janvier 2010

C'est n'importe quoi ! Tu ne peux pas mettre la même ligne pour écrire et supprimer. FILEPUT sert à écrire.
FilePut(1,""
, 5) Cela te supprimera jamais rien.

"Comprend vite mais il faut lui expliquer longtemps et tout en détail !!!"

Encore faut-il que cela soit bon ...
Messages postés
165
Date d'inscription
mardi 7 mars 2006
Statut
Membre
Dernière intervention
24 avril 2018

Wouah !!   Un sujet de 2 ans trouve encore preneur !!  Lol !!

Poupettepette>  par supprimer la ligne 5, il faut comprendre "effacer" la donnée qui y est stockée !!

Il n'existe pas, à ma connaissance, de fonction pour supprimer une ligne dans un fichier à acces direct, (si je me trompe, donne la moi !  merci !).

La solution de facilité pour enlever ce qui est stocké à une ligne déterminée, c'est d'y inscrire du 'vide' !!
D'ou:

FileOpen(1, "C:\direct.txt", OpenMode.Random)


FilePut(1, "", 5)

FileClose(1) 

Ceci dit on ne se sert pas d'un fichier à acces direct comme on se sert d'un fichier à acces séquentiel, l'un est fait pour stocker les données de manière ordonnée et formatée, l'autre les mémorises à la manière de couches, comme celle d'un oignon, que l'on est obligé d'éplucher une à une pour arriver à celle que l'on veut !!

Je comprends vite mais il faut m'expliquer longtemps et tout en détails !!!