Solution pour supprimer enregistrement fichier acces direct
cs_yvesyves
Messages postés561Date d'inscriptionsamedi 10 janvier 2004StatutMembreDernière intervention11 octobre 2010
-
22 mai 2006 à 08:50
erefdatacomputing
Messages postés165Date d'inscriptionmardi 7 mars 2006StatutMembreDernière intervention24 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
A voir également:
Comment acceder aux fichiers d'enregistrement et les supprimer?
erefdatacomputing
Messages postés165Date d'inscriptionmardi 7 mars 2006StatutMembreDernière intervention24 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 !!!
Poupettepette
Messages postés12Date d'inscriptionlundi 9 juin 2008StatutMembreDerniè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 !!!"
erefdatacomputing
Messages postés165Date d'inscriptionmardi 7 mars 2006StatutMembreDernière intervention24 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 !!!