IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP Discussion :

[FSO] Effacer une ligne dans un fichier


Sujet :

ASP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 442
    Points : 475
    Points
    475
    Par défaut [FSO] Effacer une ligne dans un fichier
    Existe-t-il une commande permettant cela ? S'il n'y en a pas, je pense récupérer le contenu de mon fichier dans un tableau (décomposition en ligne) puis réécrire ce fichier sans la ligne en question... mais c'est pas très élégant

    Voyez vous une meilleure méthode ?

  2. #2
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Salut,

    Ce n'est malheureusement pas possible. Tu es obligé de récupérer tout le texte et de le traiter. Ta méthode est plutôt élégante je trouve!
    Mon ASP commence à ce se faire vieux mais je suis quasi certain de ce que j'avance.
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 442
    Points : 475
    Points
    475
    Par défaut
    ok, merci ! Tu as sans doute raison.


  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 442
    Points : 475
    Points
    475
    Par défaut
    Voici la fonction que j'ai écrite afin d'effacer une ligne donnée d'un fichier.
    - On récupère les lignes dans un tableau
    - 1ère boucle: on efface les lignes du tableau concernées et on compte les lignes effacées
    - On créé un 2ème tableau à la bonne taille (grace au compteur de lignes effacées)
    - 2ème boucle: on recopie les valeurs du 1er tableau dans le 2ème tableau avec 2 incrémentations de variables différentes
    - 3ème boucle: on recopie les lignes du 2ème tableau dans le fichier


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    '	*** DeleteLine ***
    '	Paramètres: pointeur vers le fichier, contenu de la ligne à effacer
    '	Valeur retournée: aucune
    '	Rôle de la fonction: effacer une ou plusieurs lignes du fichier
    Function DeleteLine (file,line)
    	Dim data : data = GetFileContent (file)
    	Dim data2
    	Dim i,j,cpt : cpt = 0 : j = 0
    	For i=0 To UBound(data)-1
    		If data(i)=line Then
    			data(i)=""
    			cpt = cpt + 1
    		End If
    	Next
    	Redim data2(UBound(data)-cpt)
    	For i=0 To UBound(data)-1
    		If data&#40;i&#41;<>"" Then
    			data2&#40;j&#41;=data&#40;i&#41;
    			j = j+1
    		End If			
    	Next
    	Dim selectionFile &#58; Set selectionFile = fso.OpenTextFile&#40;file,2,False&#41;
    	For i=0 To UBound&#40;data2&#41;-1
    		selectionFile.writeLine data2&#40;i&#41;
    	Next
    	selectionFile.close
    	Set selectionFile = nothing
    End Function
     
    '	*** GetFileContent ***
    '	Paramètre&#58; pointeur vers le fichier à lire
    '	Valeur retournée&#58; tableau contenant les lignes du fichiers
    '	Rôle de la fonction&#58; obtenir le contenu du fichier dans un tableau
    Function GetFileContent &#40;file&#41;
    	Dim fso &#58; Set fso = Server.CreateObject&#40;"Scripting.FileSystemObject"&#41;
    	Dim innerStream &#58; set innerStream = fso.OpenTextFile&#40;file,1,false&#41;
    	If Not innerStream.atEndOfStream Then
    		Dim dataList &#58; dataList = Split &#40;innerStream.readAll,VbCrLf&#41;
    	End If
    	Set fso = nothing
    	GetFileContent = dataList
    End Function
    N'hésitez pas à apporter vos remarques/critiques.

  5. #5
    Membre régulier Avatar de floanne
    Inscrit en
    Février 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Février 2006
    Messages : 167
    Points : 78
    Points
    78
    Par défaut
    Le problème est si ton fichier est volumineux...

    Je te conseil de lire les lignes une à une, si la ligne t'interrese, tu la copie dans un fichier tmp, sinon tu ne fait rien. A la fin tu suprime le 1er fuichier et tu renome le tmp...

    Si tu trouve LA solution pour éviter un algo de recopie ça m'interrese !

    ++Floanne.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Effacer une ligne dans un fichier .dat
    Par Ben.r dans le forum Android
    Réponses: 8
    Dernier message: 29/07/2013, 14h15
  2. effacer une chaine de caractère dans une ligne dans un fichier texte
    Par arnaudperfect dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 25/08/2010, 11h22
  3. [CSV] Effacer une ligne dans un fichier CSV
    Par poulepexo dans le forum Langage
    Réponses: 1
    Dernier message: 22/04/2009, 13h12
  4. Effacement d'une ligne dans un fichier txt
    Par DjChat dans le forum Langage
    Réponses: 4
    Dernier message: 09/06/2008, 11h41
  5. [langage] Effacer une ligne dans un fichier
    Par sebi77 dans le forum Langage
    Réponses: 2
    Dernier message: 01/01/2005, 13h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo