webForumDet fria alternativet

Räkna rader med FSO

ASP

10 svar · 357 visningar · startad av Jesper T

Medlem sedan nov. 20017 144 inlägg
Frågan#1

Jag skulle behöva räkna rader i en textfil med FSO, vad är smartast?

Medlem sedan jan. 20032 285 inlägg
#2

Kanske såhär?

Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objTS = objFSO.OpenTextFile(Server.MapPath("fil.txt"))
intRader = UBound(Split(objTS.ReadAll, vbCrLf)) + 1
objTS.Close : Set objTS = Nothing
Set objFSO = Nothing
Medlem sedan juni 200032 967 inlägg
#3

Läs in filens innehåll i en variabel, splitta på radbrytning och använd UBound() för att ta reda på högsta index i arrayen.

Medlem sedan nov. 20017 144 inlägg
#4

Ok, tack.
Finns det något smidigt sätt att få WriteLine(forAppending) att skrivas förs i textfilen, och inte sist som den gör nu?

Medlem sedan juni 200032 967 inlägg
#5

Nej, du får skriva det du ska skriva till filen, och sedan skriva tillbaka det som låg där innan.

Medlem sedan jan. 20032 285 inlägg
#6

Kanske såhär då?

Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objTS = objFSO.OpenTextFile(Server.MapPath("fil.txt"))
strText = objTS.ReadAll
objTS.Close : Set objTS = Nothing

Set objTS = objFSO.OpenTextFile(Server.MapPath("fil.txt"), 2) ' ForWriting
objTS.WriteLine("Detta kommer överst, över den gamla texten.")
objTS.Write(strText)
objTS.Close : Set objTS = Nothing

Set objFSO = Nothing
Medlem sedan nov. 20017 144 inlägg
#7

Tack, funka 100% bra.

Medlem sedan nov. 20017 144 inlägg
#8

Hur radera allt efter rad 10?
Alltså, textfilen får endast innehålla 10 rader.

Medlem sedan jan. 20032 285 inlägg
#9

Nu börjar du bli jobbig. ;) :P

Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objTS = objFSO.OpenTextFile(Server.MapPath("fil.txt"))
arrText = Split(objTS.ReadAll, vbCrLf)
objTS.Close : Set objTS = Nothing

Set objTS = objFSO.OpenTextFile(Server.MapPath("fil.txt"), 2)
objTS.WriteLine("Detta kommer överst, över den gamla texten.")

For i = UBound(arrText) To 0 Step - 1
  If i > UBound(arrText) - 10 Then
    objTS.Write(arrText(i))
  Else
    Exit For
  End If
Next

objTS.Close : Set objTS = Nothing
Set objFSO = Nothing
Medlem sedan nov. 20017 144 inlägg
#10

Nu var du jättebussig, tårta kommer på posten.

Medlem sedan jan. 20032 285 inlägg
#11

Jesper T skrev:

Nu var du jättebussig, tårta kommer på posten.

Mums! :D

250 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
115 ms — ändringar (db)