Solution pour supprimer enregistrement fichier acces direct

cs_yvesyves Messages postés 561 Date d'inscription samedi 10 janvier 2004 Statut Membre Dernière intervention 11 octobre 2010 - 22 mai 2006 à 08:50
erefdatacomputing Messages postés 165 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 24 avril 2018 - 14 août 2008 à 23:44
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

erefdatacomputing Messages postés 165 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 24 avril 2018
24 mai 2006 à 15:03
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 !!!
0
Poupettepette Messages postés 12 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 2 janvier 2010
14 août 2008 à 09:01
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 ...
0
erefdatacomputing Messages postés 165 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 24 avril 2018
14 août 2008 à 23:44
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 !!!
0
Rejoignez-nous