Avatar billede ttopholm Nybegynder
03. juni 2004 - 00:47 Der er 13 kommentarer og
1 løsning

Søge i tekstfil

Hvad er den simpleste måde at gribe det her an, jeg har en tekstfil, hvor jeg skal finde noget bestemt.. men jeg ved ikke hvad det er..(Et random tal nemlig) men jeg ved det kommer tre linier før det ord jeg ved.. Hvad er den nemmeste måde... ville det være at smide hver linie ind i et array og samtidig med at jeg kigger efter mit ord.. og når det er fundet går jeg bare 2-3 (an på hvor når du sætter linien i arrayet) tilbage i arrayet og skriver det ud... eller er der en smartere løsning
Avatar billede ellebaek Nybegynder
03. juni 2004 - 09:25 #1
ville umiddelbart bruge en forløkke hvor du så tester hver enkelt linie for om den indeholder det random tal..
Gør den det, så ville jeg tælle 3 op, og så vælge den linie så får du den linie ud som du ønsker.
Avatar billede ttopholm Nybegynder
03. juni 2004 - 09:52 #2
kan du vise et eksempel med forløkken
Avatar billede killerclown Nybegynder
03. juni 2004 - 10:54 #3
Dette lille eksempel åbner filen tekststreng.txt og kigger efter ordet "ord" i den 3. linie.

<%
i = 0
const forreading = 1
filepath = server.MapPath("tekststreng.txt")
Set objFSO = server.CreateObject("Scripting.FileSystemObject")
set file = objFSO.GetFile(Filepath)
Set objTekst = file.OpenAsTextStream(forreading)
for i = 1 to 3
strLinie = objtekst.readline
next
streng = strlinie
Sord = "ord"
MyPos = InstrRev(streng, Sord)
if MyPos <> "0" then
response.Write("Ordet findes")
else
response.Write("Ordet findes ikke")
end if
%>

MVH Morten
Avatar billede ellebaek Nybegynder
03. juni 2004 - 10:58 #4
<%
Sord = "ord"
const forreading = 1
filepath = server.MapPath("tekststreng.txt")
Set objFSO = server.CreateObject("Scripting.FileSystemObject")
set file = objFSO.GetFile(Filepath)
Set objTekst = file.OpenAsTextStream(forreading)
i = 0
while not objTekst.atEndOfStream and i <= 3 then
if i = 0 then
strLinie = objtekst.readline
MyPos = Instr(streng, Sord)
if MyPos > 0 then
i = i+1
end if
else
strLine = objTekst.readLine
i = i+1
end if
next
streng = strlinie
%>


Sådan her..

Så læser du igennem filen indtil du finder ordet du søger efter Sord.
Når du har fundet det, så tæller filen 3 linier frem og gemmer linien i variablen streng.
Avatar billede killerclown Nybegynder
03. juni 2004 - 11:08 #5
HAHAHA :):):):)
Det var vi da nogenlunde enige om :o)
/Morten
Avatar billede ellebaek Nybegynder
03. juni 2004 - 11:09 #6
arh.. Ikke helt morten :-)

Hvis du kigger lidt på min, så finder den ordet og tæller 3 linier frem bagefter ;-)
Avatar billede killerclown Nybegynder
03. juni 2004 - 11:11 #7
Hov, det har du da ret i :)
Avatar billede ttopholm Nybegynder
03. juni 2004 - 11:17 #8
ja.. men den skal tælle tre linier tilbage  :-)
Avatar billede killerclown Nybegynder
03. juni 2004 - 11:33 #9
Hvad med sådan så :

<%
i = 0
const forreading = 1
filepath = server.MapPath("tekststreng.txt")
Set objFSO = server.CreateObject("Scripting.FileSystemObject")
set file = objFSO.GetFile(Filepath)
Set objTekst = file.OpenAsTextStream(forreading)
Dim strlinie(15)
i = 0
while not objTekst.atEndOfStream
i = i + 1
strLinie(i) = objtekst.readline
Sord = " ord "
MyPos = InstrRev(strlinie(i), Sord)
if MyPos <> "0" then
response.Write(strlinie(i-3))
end if
wend
%>
Avatar billede killerclown Nybegynder
03. juni 2004 - 11:36 #10
Hov ..
Dim strlinie skal naturligvis lige rettes ;)
Avatar billede ttopholm Nybegynder
03. juni 2004 - 16:00 #11
ja.. til et par tusind da tekstfilen er pæn stor :-)
Avatar billede ttopholm Nybegynder
03. juni 2004 - 16:01 #12
den her InstrRev, hvorfor bruger du den.. og ikke instr
Avatar billede killerclown Nybegynder
03. juni 2004 - 16:08 #13
Det er der ikke rigtig nogen årsag til :o)
Jeg pastede fra et tidligere script, hvor jeg skulle have placeringen af
en streng fra slutningen at en anden streng ;)

MVH Morten
Avatar billede ellebaek Nybegynder
04. juni 2004 - 10:56 #14
hmm...
hvis forekomsten kun kommer en gang..
Ville da forestille mig at dette ville virke så:

<%
i = 0
dim strEt, strTo, strTre
const forreading = 1
filepath = server.MapPath("tekststreng.txt")
Set objFSO = server.CreateObject("Scripting.FileSystemObject")
set file = objFSO.GetFile(Filepath)
Set objTekst = file.OpenAsTextStream(forreading)

while not objTekst.atEndOfStream and i = 0
strTre = strTo
strTo = strEt
strEt = objtekst.readline
Sord = " ord "
MyPos = Instr(strEt, Sord)
if MyPos <> "0" then
response.Write(strTre)
i = i+1
end if
wend
%>
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

Seneste spørgsmål Seneste aktivitet
I går 10:21 Ny printer, men hvilken Af mort1 i Printere
13/0819:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging