Avatar billede thufir Nybegynder
10. juli 2002 - 01:06 Der er 12 kommentarer

Øhhh slette en linie i en txtfil??

Harjsa jeg har et lille problem.... Hvilken asp kommando bruger man til at slette den sidste linie i en txt fil???
Avatar billede oasen Nybegynder
10. juli 2002 - 02:19 #1
Mener det er noget i den stil:

For intLine = 1 to (f.AtEndOfStream - 1)
  f.SkipLine
Next
f.WriteLine ""
Avatar billede eagleeye Praktikant
10. juli 2002 - 09:54 #2
Det kan man ikke direkte du må åbne en ny fil og så skrive de linie du har behov for til den nye fil og så omdøb den nye temp til det gamle fil navn..:

set fs=Server.CreateObject("Scripting.FileSystemObject")
set ftemp=fs.CreateTextFile("c:\temp.txt",true)
Set f=fs.OpenTextFile("c:\rigtigfil.txt" 1)

do while f.AtEndOfStream = false
  tempLine = f.ReadLine
  'Når det så er sidste linie du vil slette kan du gøre sådan her
  'ved at tjekke om f.AtEndOfStrean = false, hvis den er true
  ' har vi læst sidste linie og den skal ikke skrives til ftemp
  if f.AtEndOfStrean = false then
    ftemp.writeline (tempLine)
  end if
loop
'Luk filerne
f.Close
ftemp.Close
'Slet den gamle fil:
f.Delete
'Omdøb temp filen til det rigtige filnavn
ftemp.Move("c:\rigtigfil.txt")
Set f = nothing
Set ftemp = nothing
Avatar billede oasen Nybegynder
10. juli 2002 - 12:49 #3
Det var dog besværligt, men sikkert helt rigtigt...
Avatar billede eagleeye Praktikant
10. juli 2002 - 17:27 #4
Jeps det er pga. FSO ikke understytter eks.vis DeleteLine, så man må flytte dem fra en fil til en anden.

Man kan også åbne filen læse linie for linie minus den sidste ind i memory, lukke filen, åbne filen for write og så overskrive dem med det som ligge i memory....
Avatar billede oasen Nybegynder
10. juli 2002 - 17:56 #5
Det er lige så smart som at skrive forkert med en kuglepen...
Avatar billede oasen Nybegynder
10. juli 2002 - 17:58 #6
Hvis der er 25 linier, og du overskriver dem med 24 linier - vil den sidste linie så ikke stadig være der, vedmindre den overskrives med *ingenting*?
Avatar billede eagleeye Praktikant
10. juli 2002 - 18:42 #7
Der var lige et par små fejl i første forsøg:


set fs=Server.CreateObject("Scripting.FileSystemObject")
set ftemp=fs.CreateTextFile("c:\inetpub\wwwroot\eksperten\temp.txt",true)
Set f=fs.OpenTextFile("c:\inetpub\wwwroot\eksperten\rigtigfil.txt", 1)

do while f.AtEndOfStream = false
  tempLine = f.ReadLine
  'Når det så er sidste linie du vil slette kan du gøre sådan her
  'ved at tjekke om f.AtEndOfStrean = false, hvis den er true
  ' har vi læst sidste linie og den skal ikke skrives til ftemp
  if f.AtEndOfStream = false then
    ftemp.writeline (tempLine)
  end if
loop
'Luk filerne
f.Close
ftemp.Close
'Slet den gamle fil:
set f=fs.GetFile("c:\inetpub\wwwroot\eksperten\rigtigfil.txt")
f.Delete
'Omdøb temp filen til det rigtige filnavn
set f=fs.GetFile("c:\inetpub\wwwroot\eksperten\temp.txt")
f.Move("c:\inetpub\wwwroot\eksperten\rigtigfil.txt")
Set f = nothing
Set ftemp = nothing
Avatar billede eagleeye Praktikant
10. juli 2002 - 19:06 #8
Hehe oasen.. det svare nu mere til at man skrive 25 linier og så vil man slette den sidste så river man siden af papir bloken og skrive de 24 første linier igen.

Denne kode læser alle linier minus den sidste og gemmer dem i et array og skriver dem så tilbage til filen efter den har være lukket og åbnet igen:


Dim file_arr()
set fs=Server.CreateObject("Scripting.FileSystemObject")
Set f=fs.OpenTextFile("c:\rigtigfil.txt", 1)

do while f.AtEndOfStream = false
  tempLine = f.ReadLine
  'Når det så er sidste linie du vil slette kan du gøre sådan her
  'ved at tjekke om f.AtEndOfStrean = false, hvis den er true
  ' har vi læst sidste linie og den skal ikke skrives til ftemp
  if f.AtEndOfStream = false then
    redim preserve file_arr(f.line)
    file_arr(f.line-1) = tempLine
  end if
loop
'Luk filen
f.Close
'Åben filen for skrivning
Set f=fs.OpenTextFile("c:\rigtigfil.txt", 2)
for i = lbound(file_arr)+1 to ubound(file_arr)-1
  'Udskriv linie for linie til filen
  f.writeLine file_Arr(i) 
next
'Luk filen
f.Close
Set f = nothing
Avatar billede oasen Nybegynder
10. juli 2002 - 19:28 #9
Funderede bare over, hvor de 25 linier bliver af, når du siger, man ikke kan slette dem på andre måder end at slette selve filen!?
Så bliver de vel overskrevet med de 24 linier, men der må da stadig være en linie, der ikke er slettet.........
Avatar billede eagleeye Praktikant
10. juli 2002 - 19:32 #10
Det er den måde som fil systemet er bygget op på.. Når man åbner fra write overskriver man hele filens indhold. Hvis man åbner for Append så kan man skrive ekstra linier til i slutningen af filen.
Avatar billede oasen Nybegynder
11. juli 2002 - 03:21 #11
Nå, ja - det er da også rigtigt!

Sad lige og tænkte på...... noget andet ;)
Avatar billede eagleeye Praktikant
22. september 2002 - 21:26 #12
thufir kom du vidre med det?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester