|
| 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
| |
|
|