/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Hente tilfældig linie fra txtfil
Fra : Rasmus Weber


Dato : 15-12-00 23:24

Hvordan kan man nemmest hente en tilfældig linie fra en .txt-fil?


--
-Rasmus Weber
weber@we-st.dk
www.tildeweber.com


 
 
Jakob Ladingkær (15-12-2000)
Kommentar
Fra : Jakob Ladingkær


Dato : 15-12-00 23:51

Prøv det her.

Dim fso,ts,content

Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.OpenTextFile(Server.MapPath("mintekstfil.txt"),1)
content = ts.ReadLine

Ellers kig i VBScript User's Guide, kan hentes hos microsoft.

/ Jakob

"Rasmus Weber" <weber*NOSPAM*@we-st.dk> wrote in message
news:MQw_5.13383$XB.618291@news010.worldonline.dk...
> Hvordan kan man nemmest hente en tilfældig linie fra en .txt-fil?
>
>
> --
> -Rasmus Weber
> weber@we-st.dk
> www.tildeweber.com
>



Rasmus Weber (16-12-2000)
Kommentar
Fra : Rasmus Weber


Dato : 16-12-00 00:05

Tak for det hurtige svar. Men nu henter den bare fra 1 linie hele tiden.
Hvordan får man den til at hente fra en helt random linie?

--
-Rasmus Weber
weber@we-st.dk
www.tildeweber.com


Jakob Ladingkær <jakob@ladingkaer.dk-nospam> wrote in message
news:vdx_5.13393$XB.619717@news010.worldonline.dk...
| Prøv det her.
|
| Dim fso,ts,content
|
| Set fso = CreateObject("Scripting.FileSystemObject")
| Set ts = fso.OpenTextFile(Server.MapPath("mintekstfil.txt"),1)
| content = ts.ReadLine
|
| Ellers kig i VBScript User's Guide, kan hentes hos microsoft.
|
| / Jakob
|
| "Rasmus Weber" <weber*NOSPAM*@we-st.dk> wrote in message
| news:MQw_5.13383$XB.618291@news010.worldonline.dk...
| > Hvordan kan man nemmest hente en tilfældig linie fra en .txt-fil?
| >
| >
| > --
| > -Rasmus Weber
| > weber@we-st.dk
| > www.tildeweber.com
| >
|
|


Lauritz Jensen (16-12-2000)
Kommentar
Fra : Lauritz Jensen


Dato : 16-12-00 00:25

Rasmus Weber wrote:
>
> Men nu henter den bare fra 1 linie hele tiden.
> Hvordan får man den til at hente fra en helt random linie?

Jamen, man kan jo ikke vide hvor linierne starter, for filer er jo bare
en stripe bytes efter hinanden. Derfor bliver du nød til f.eks. at lede
igennem filen fra starten af (det er ikke så rart hvis der er mange
linier i din fil, men de kunne gå).
Du kunne også hoppe ind på en tilfældig byte i filen og så "bakke"
indtil du støder på starten af linie også læse linien derfra (det bliver
ikke helt tilfældigt, hvis linierne ikke har samme længde).
En anden løsning kunne være at have en fil med linierne og en så bare
indeholdt positionen, hvor de forskellige linier starter. Så du først
vælge dig en tilfældig linie, så slå op hvor den ligger og tilsidst
hente den.
Hvis dinne linier alle har samme længde (evt. med mellemrum i enden,
hvis de ikke er lige lange af sig selv), kan du jo bare hoppe ind på
position (linielængden * rnd) og læse (linielængde) antal bytes.
Man kunne også lægge en linie i hver fil i et katalog med mange filer,
og så bare åbne den fil med filnavnet ("/katalog/" & antalfiler * rnd &
".txt"), men så skal filnavnene jo være fortløbende (og du bliver nok
nød til at dele filerne op i flere kataloger hvis der er mange filer).
Du kunne jo også bare smide det i en database.

Hov... der forvirrede jeg vist mere end jeg hjalp...

--
Lauritz

Rasmus Weber (16-12-2000)
Kommentar
Fra : Rasmus Weber


Dato : 16-12-00 02:43

Garg! Den sidste sætning passer ret godt =)

Hvis jeg har en tekstfil der ser sådan ud;

indhold.txt:
Linie 1 ser således ud
Dette er linie 2
Den tredje line er denne

Hvordan kan jeg så tage en tilfældig line (Det der ligger imellem to
Enter-tast) og putte den ind i mit output?

Resultatet kunne så være at man i løbet af 5 reloads ser:
Dette er linie 2
Den tredje line er denne
Dette er linie 2
Dette er linie 2
Linie 1 ser således ud

--
-Rasmus Weber
weber@we-st.dk

| Jamen, man kan jo ikke vide hvor linierne starter, for filer er jo bare
| en stripe bytes efter hinanden. Derfor bliver du nød til f.eks. at lede
| igennem filen fra starten af (det er ikke så rart hvis der er mange
| linier i din fil, men de kunne gå).
| Du kunne også hoppe ind på en tilfældig byte i filen og så "bakke"
| indtil du støder på starten af linie også læse linien derfra (det bliver
| ikke helt tilfældigt, hvis linierne ikke har samme længde).
| En anden løsning kunne være at have en fil med linierne og en så bare
| indeholdt positionen, hvor de forskellige linier starter. Så du først
| vælge dig en tilfældig linie, så slå op hvor den ligger og tilsidst
| hente den.
| Hvis dinne linier alle har samme længde (evt. med mellemrum i enden,
| hvis de ikke er lige lange af sig selv), kan du jo bare hoppe ind på
| position (linielængden * rnd) og læse (linielængde) antal bytes.
| Man kunne også lægge en linie i hver fil i et katalog med mange filer,
| og så bare åbne den fil med filnavnet ("/katalog/" & antalfiler * rnd &
| ".txt"), men så skal filnavnene jo være fortløbende (og du bliver nok
| nød til at dele filerne op i flere kataloger hvis der er mange filer).
| Du kunne jo også bare smide det i en database.
|
| Hov... der forvirrede jeg vist mere end jeg hjalp...
|
| --
| Lauritz


Jakob Ladingkær (16-12-2000)
Kommentar
Fra : Jakob Ladingkær


Dato : 16-12-00 11:04

Unskyld, jeg glemte at fortælle hvordan du skifter linie.

Her er det :

Dim fso,ts,content

Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.OpenTextFile(Server.MapPath("mintekstfil.txt"),1)
ts.SkipLine
content = ts.ReadLine

Nu henter den 2. linie, så hvis det er forskelligt hvilken linie den skal
hente, så må du lave et loop der køre ts.SkipLine x antal gange.

God fornøjelse.

/ Jakob

"Rasmus Weber" <weber*NOSPAM*@we-st.dk> wrote in message
news:nLz_5.13454$0p2.612017@news000.worldonline.dk...
> Garg! Den sidste sætning passer ret godt =)
>
> Hvis jeg har en tekstfil der ser sådan ud;
>
> indhold.txt:
> Linie 1 ser således ud
> Dette er linie 2
> Den tredje line er denne
>
> Hvordan kan jeg så tage en tilfældig line (Det der ligger imellem to
> Enter-tast) og putte den ind i mit output?
>
> Resultatet kunne så være at man i løbet af 5 reloads ser:
> Dette er linie 2
> Den tredje line er denne
> Dette er linie 2
> Dette er linie 2
> Linie 1 ser således ud
>
> --
> -Rasmus Weber
> weber@we-st.dk
>
> | Jamen, man kan jo ikke vide hvor linierne starter, for filer er jo bare
> | en stripe bytes efter hinanden. Derfor bliver du nød til f.eks. at lede
> | igennem filen fra starten af (det er ikke så rart hvis der er mange
> | linier i din fil, men de kunne gå).
> | Du kunne også hoppe ind på en tilfældig byte i filen og så "bakke"
> | indtil du støder på starten af linie også læse linien derfra (det bliver
> | ikke helt tilfældigt, hvis linierne ikke har samme længde).
> | En anden løsning kunne være at have en fil med linierne og en så bare
> | indeholdt positionen, hvor de forskellige linier starter. Så du først
> | vælge dig en tilfældig linie, så slå op hvor den ligger og tilsidst
> | hente den.
> | Hvis dinne linier alle har samme længde (evt. med mellemrum i enden,
> | hvis de ikke er lige lange af sig selv), kan du jo bare hoppe ind på
> | position (linielængden * rnd) og læse (linielængde) antal bytes.
> | Man kunne også lægge en linie i hver fil i et katalog med mange filer,
> | og så bare åbne den fil med filnavnet ("/katalog/" & antalfiler * rnd &
> | ".txt"), men så skal filnavnene jo være fortløbende (og du bliver nok
> | nød til at dele filerne op i flere kataloger hvis der er mange filer).
> | Du kunne jo også bare smide det i en database.
> |
> | Hov... der forvirrede jeg vist mere end jeg hjalp...
> |
> | --
> | Lauritz
>



Rasmus Weber (16-12-2000)
Kommentar
Fra : Rasmus Weber


Dato : 16-12-00 13:30

Takker for hjælpen indtil videre.
Men når der bliver sagt:
"Nu henter den 2. linie, så hvis det er forskelligt hvilken linie den skal
hente, så må du lave et loop der køre ts.SkipLine x antal gange."

Hvordan kan jeg randomizer jeg x? Og hvad nu hvis der kun er 4 linier i min
tekstfil og x så er f.eks. 5? Begynder den forfra selv?

--
-Rasmus Weber
weber@we-st.dk

<snip>
| Unskyld, jeg glemte at fortælle hvordan du skifter linie.
|
| Her er det :
|
| Dim fso,ts,content
|
| Set fso = CreateObject("Scripting.FileSystemObject")
| Set ts = fso.OpenTextFile(Server.MapPath("mintekstfil.txt"),1)
| ts.SkipLine
| content = ts.ReadLine
|
| Nu henter den 2. linie, så hvis det er forskelligt hvilken linie den skal
| hente, så må du lave et loop der køre ts.SkipLine x antal gange.
|
| God fornøjelse.
|
| / Jakob
|
| > Hvis jeg har en tekstfil der ser sådan ud;
| >
| > indhold.txt:
| > Linie 1 ser således ud
| > Dette er linie 2
| > Den tredje line er denne
| >
| > Hvordan kan jeg så tage en tilfældig line (Det der ligger imellem to
| > Enter-tast) og putte den ind i mit output?
| >
| > Resultatet kunne så være at man i løbet af 5 reloads ser:
| > Dette er linie 2
| > Den tredje line er denne
| > Dette er linie 2
| > Dette er linie 2
| > Linie 1 ser således ud
| >
| > --
| > -Rasmus Weber
| > weber@we-st.dk
</snip>


Jakob Ladingkær (16-12-2000)
Kommentar
Fra : Jakob Ladingkær


Dato : 16-12-00 16:09

Nu er min viden ved at slippe op.

Du må kontrollere at dit loop ikke "skipper" flere linier end der er, ellers
kommer der en fejl-meddelelse.

Brug evt.

If Not ts.AtEndOfStream Then
ts.SkipLine
End If

/Jakob

"Rasmus Weber" <weber*NOSPAM*@we-st.dk> wrote in message
news:peJ_5.14238$0p2.632396@news000.worldonline.dk...
> Takker for hjælpen indtil videre.
> Men når der bliver sagt:
> "Nu henter den 2. linie, så hvis det er forskelligt hvilken linie den skal
> hente, så må du lave et loop der køre ts.SkipLine x antal gange."
>
> Hvordan kan jeg randomizer jeg x? Og hvad nu hvis der kun er 4 linier i
min
> tekstfil og x så er f.eks. 5? Begynder den forfra selv?
>
> --
> -Rasmus Weber
> weber@we-st.dk
>
> <snip>
> | Unskyld, jeg glemte at fortælle hvordan du skifter linie.
> |
> | Her er det :
> |
> | Dim fso,ts,content
> |
> | Set fso = CreateObject("Scripting.FileSystemObject")
> | Set ts = fso.OpenTextFile(Server.MapPath("mintekstfil.txt"),1)
> | ts.SkipLine
> | content = ts.ReadLine
> |
> | Nu henter den 2. linie, så hvis det er forskelligt hvilken linie den
skal
> | hente, så må du lave et loop der køre ts.SkipLine x antal gange.
> |
> | God fornøjelse.
> |
> | / Jakob
> |
> | > Hvis jeg har en tekstfil der ser sådan ud;
> | >
> | > indhold.txt:
> | > Linie 1 ser således ud
> | > Dette er linie 2
> | > Den tredje line er denne
> | >
> | > Hvordan kan jeg så tage en tilfældig line (Det der ligger imellem to
> | > Enter-tast) og putte den ind i mit output?
> | >
> | > Resultatet kunne så være at man i løbet af 5 reloads ser:
> | > Dette er linie 2
> | > Den tredje line er denne
> | > Dette er linie 2
> | > Dette er linie 2
> | > Linie 1 ser således ud
> | >
> | > --
> | > -Rasmus Weber
> | > weber@we-st.dk
> </snip>
>



Rasmus Weber (16-12-2000)
Kommentar
Fra : Rasmus Weber


Dato : 16-12-00 17:49

Tak for hjælpen.
Jeg tror at jeg har hvad jeg skal bruge nu.
Men sov ikke trygt! Jeg vender sikkert tilbage til gruppen, med flere
spørgsmål!

--
-Rasmus Weber
weber@we-st.dk



Søg
Reklame
Statistik
Spørgsmål : 177557
Tips : 31968
Nyheder : 719565
Indlæg : 6408868
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste