/ 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
Skrive til en tekstfil
Fra : Gitte Lauritsen


Dato : 28-03-04 23:30

Hej !
Via en formular skal man kunne skrive noget.
Det skal lagres i en tekstfil, når man klikker på tilføj, og
teksten vises så på siden.
Derefter kan der skrives igen - og når man klikke på tilføj,
bliver det foregående slettet og det nye tilført txt-filen.

Jeg har forsøgt og har brugt filespec,2 - da filespec,8 gemmer
alt der bliver skrevet. Problemet er at den ikke gemmer det der
skrives til tekst-filen. Der er ikke andre der vil kunne læse
det, og det er netop meningen - at alle skal kunne læse det,
indtil der er en ny der klikker på tilføj.


Det bedste ville være hvis man kunne få den til at gemme de 10
sidste linier der er skrevet, og så slette det ældste, men det er
måske for kompliceret for mig.

Jeg har arbejdet ud fra eksemplet på html.dk's asp turtorial, der
handler om at skrive til en text-fil.

Min kode ser nu således ud:
<center>
<div class="chat_vindue"
<p>

<%
Dim fso, f, filespec
Set fso = CreateObject("Scripting.FileSystemObject")
filespec = Server.Mappath("/medlem/beskeder.txt")
Set f = fso.OpenTextFile(filespec,8)

' Skriv tekst
f.Write Request.Form("kommentar")
f.WriteLine "</ br>"

' Åbn filen til læsning
Set f = fso.OpenTextFile(filespec,1)
Do While not f.AtEndOfStream
Response.write f.ReadLine & "</ br>"
Loop
f.Close
%>

</p>
</div>
</center>

<center>
<form method='post' action='/medlem/chat.asp' >
<table width="56%" border="0">
<tr>
<td>
<p><b>Besked:</p></b>
<p align="left"><textarea cols="48" rows="3"
name='kommentar'></textarea>
</p>
</td>
</tr>
<tr>
<td>
<p align="left"><input type="submit" value="Tilføj"></p>

</td>
</tr>
</table>
</form>
</center>

Jeg har bakset en del med det, og det vil være dejligt om nogle
kan hjælpe mig med at knække den, eller bare gøre mig klogere!

Hilsen Gitte

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Jens Gyldenkærne Cla~ (29-03-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 29-03-04 09:59

Gitte Lauritsen skrev:

> f.Write Request.Form("kommentar")
> f.WriteLine "</ br>"

Hvis du vil have et html-linjeskift indsat i filen, skal du skrive
"<br>" - ikke "</ br>". Og hvis du vil have det som xhtml, er koden
"<br />".



> ' Åbn filen til læsning

Hov - du har ikke lukket den fil du skriver til. Hvis du vil have
fat i hele filen, bør du først lukke den (f.close) - ligesom der
står i html.dk's tutorial.

Men det kan ikke betale sig at skrive filen først og derefter læse
den igen - det er dobbelt arbejde.

Start i stedet med at læse og udskrive filen (evt. begrænset til de
sidste 10 linjer), tilføj derefter den nye linje (udskriv form-
requestet) og put endelig den nye linje ned i tekstfilen.

Jeg ved ikke om der er en god måde at hive fat i de sidste 9-10
linjer på (hvis du vil have 10 linjer udskrevet og der er 1 linje
fra form-requestet, så skal du kun læse 9 fra filen) - men en mulig
fremgangsmåde er følgende:

1) Åbn filen
2) Opret et array med alle linjer i filen (måske kan det gøres med
split på et linjeskift, ellers må du løbe filen igennem med
readline)
3) Tag de sidste 9 værdier fra arrayet (Max(0, Ubound(array)-9) -
Ubound(array) og udskriv dem - dels til skærmen og dels til filen
4) Tilføj den nye linje.


> Response.write f.ReadLine & "</ br>"

Som før tror jeg du skal rette din linjeskiftkode. I øvrigt er der
vel ikke grund til både at gemme linjeskiftkoder i filen og tilføje
linjeskift ved udskriften - det burde give dobbelt linjeskift.


> Jeg har bakset en del med det, og det vil være dejligt om nogle
> kan hjælpe mig med at knække den, eller bare gøre mig klogere!

Har du evt. et link til siden? Det kan gøre det lettere at hjælpe.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Gitte Lauritsen (29-03-2004)
Kommentar
Fra : Gitte Lauritsen


Dato : 29-03-04 11:30

Hej - og herligt at nogen vil hjælpe!!

Jens GyldenkærneClausen wrote in
> Hvis du vil have et html-linjeskift indsat i filen, skal du skrive
> "<br>" - ikke "</ br>". Og hvis du vil have det som xhtml, er koden
> "<br />".
>
Her har jeg bare været træt!
>
>
> > ' Åbn filen til læsning
>
> Hov - du har ikke lukket den fil du skriver til. Hvis du vil have
> fat i hele filen, bør du først lukke den (f.close) - ligesom der
> står i html.dk's tutorial.
>
Der står f.close nederst i scriptet efter Loop
Skal det stå andre steder også?

> Men det kan ikke betale sig at skrive filen først og derefter læse
> den igen - det er dobbelt arbejde.
>
Skal jeg bare bytte om på ' Skriv tekst og ' Åbn filen ?

> Start i stedet med at læse og udskrive filen (evt. begrænset til de
> sidste 10 linjer), tilføj derefter den nye linje (udskriv form-
> requestet) og put endelig den nye linje ned i tekstfilen.
>
Hvad nu hvis jeg vil have at indholdet af textfilen bliver erstattet,
når en ny klikker på Tilføj, men indtil da skal alle kunne læse det
sidst skrevne?

> Jeg ved ikke om der er en god måde at hive fat i de sidste 9-10
> linjer på (hvis du vil have 10 linjer udskrevet og der er 1 linje
> fra form-requestet, så skal du kun læse 9 fra filen) - men en mulig
> fremgangsmåde er følgende:
>
> 1) Åbn filen
> 2) Opret et array med alle linjer i filen (måske kan det gøres med
> split på et linjeskift, ellers må du løbe filen igennem med
> readline)
> 3) Tag de sidste 9 værdier fra arrayet (Max(0, Ubound(array)-9) -
> Ubound(array) og udskriv dem - dels til skærmen og dels til filen
> 4) Tilføj den nye linje.
>

Jeg er ikke bekendt med Ubound, men jeg vil kigge på det.

>
> > Response.write f.ReadLine & "<br>"
I øvrigt er der
> vel ikke grund til både at gemme linjeskiftkoder i filen og tilføje
> linjeskift ved udskriften - det burde give dobbelt linjeskift.
>

Det var fordi den ikke vill gemme linjeskift her - så tilføjede jeg
linien f.WriteLine "<br>" under 'Skriv tekst'
Jeg ved ikke hvorfor det pludselig ikke var nok at skrive "<br>" i
Response.write (jeg brugte ikke skråstreg til at starte med)
Det gav altså ikke dobbelt linjeskift (?).

>
> Har du evt. et link til siden? Det kan gøre det lettere at hjælpe.

Da jeg sidder og bakser med det, er det lidt svært at lave et aktuelt
link, men jeg har lavet en test-side her:
http://www.skoliose.dk/medlem/test.asp
(Jeg har sat sidens kode ind i et textarea på siden. Hvis jeg ændrer
på koden smider jeg det ind der, så du kan se den aktuelle kode.)

Hilsen Gitte

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jens Gyldenkærne Cla~ (29-03-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 29-03-04 11:56

Gitte Lauritsen skrev:

>> Hov - du har ikke lukket den fil du skriver til.

> Der står f.close nederst i scriptet efter Loop
> Skal det stå andre steder også?

Ja - når du skriver som du gør nu.

Lige nu har du først:

   Set f = fso.OpenTextFile(filespec,8)

- efterfulgt af et par linjer hvor du skriver til filen.

Herefter skriver du:

   Set f = fso.OpenTextFile(filespec,1)


Det giver to problemer. For det første taber du den første
reference til din fil. Det der sker når den anden "Set f"-linje
køres er nemlig at den første variabel bliver overskrevet af den
anden. Den filreference som der lå i f fra den første linje, hænger
nu "i fri luft" - du kan ikke henvise til den og du kan dermed
heller ikke lukke filen. For det andet vil du formentlig åbne en
fil uden indhold - fordi det indhold du har skrevet med den første
instans af f endnu ikke er gemt helt.

Det svarer til det problem du kan få hvis du åbner en fil med ét
program, redigerer lidt uden at gemme og derefter åbner samme fil
med et andet program. De ændringer du har lavet vil ikke kunne ses
i det andet program når det første program ikke har gemt dem.

Hvis du satte f.close ind (samt evt. set f = nothing) før nr. 2
"Set f"-linje, burde du få teksten med når du læser i anden omgang.
Men det vil stadig være en uhensigtsmæssig rækkefølge.


> Skal jeg bare bytte om på ' Skriv tekst og ' Åbn filen ?

Ja - det ville jeg gøre.


> Hvad nu hvis jeg vil have at indholdet af textfilen bliver
> erstattet, når en ny klikker på Tilføj, men indtil da skal
> alle kunne læse det sidst skrevne?

Skal du ikke kun slette én linje hver gang du tilføjer en ny? Så
vidt jeg forstod dig, ville du have de 10 nyeste indlæg (linjer)
vist. Så skal du ikke erstatte hele filen, men blot sørge for at
det kun er de nyeste 10 indlæg der kommer til at stå der.


> Jeg er ikke bekendt med Ubound, men jeg vil kigge på det.

Google er din ven:

<http://www.google.com/search?q=ubound+asp>


Ubound giver indeks-værdien på det sidste element i et array.


> Da jeg sidder og bakser med det, er det lidt svært at lave et
> aktuelt link, men jeg har lavet en test-side her:
> http://www.skoliose.dk/medlem/test.asp

Fint - man kan dog ikke tilføje noget (jeg bliver sendt videre til
en login-side).


> (Jeg har sat sidens kode ind i et textarea på siden. Hvis jeg
> ændrer på koden smider jeg det ind der, så du kan se den
> aktuelle kode.)

Også en fin ide. Husk bare at gøre opmærksom på evt. ændringer her.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Gitte Lauritsen (29-03-2004)
Kommentar
Fra : Gitte Lauritsen


Dato : 29-03-04 12:20

Jens GyldenkærneClausen wrote in
>
> Lige nu har du først:
>
>    Set f = fso.OpenTextFile(filespec,8)
>
> - efterfulgt af et par linjer hvor du skriver til filen.
>
> Herefter skriver du:
>
>    Set f = fso.OpenTextFile(filespec,1)

> Hvis du satte f.close ind (samt evt. set f = nothing) før nr. 2
> "Set f"-linje, burde du få teksten med når du læser i anden omgang.
> Men det vil stadig være en uhensigtsmæssig rækkefølge.
>
>
> > Skal jeg bare bytte om på ' Skriv tekst og ' Åbn filen ?
>
> Ja - det ville jeg gøre.
>

Man kan ikke bare bytte om i koden.
Se fejl på test-siden

>
> > Hvad nu hvis jeg vil have at indholdet af textfilen bliver
> > erstattet, når en ny klikker på Tilføj, men indtil da skal
> > alle kunne læse det sidst skrevne?
>
> Skal du ikke kun slette én linje hver gang du tilføjer en ny? Så
> vidt jeg forstod dig, ville du have de 10 nyeste indlæg (linjer)
> vist. Så skal du ikke erstatte hele filen, men blot sørge for at
> det kun er de nyeste 10 indlæg der kommer til at stå der.
>
Jeg kan godt leve med at filen bliver erstattet, når nogle tilføjer
nyt. Måske er det for svæt for mig med de sidste 10 linier. Jeg vil
dog gerne prøve...
>
> > Jeg er ikke bekendt med Ubound, men jeg vil kigge på det.
>
> Google er din ven:
>
> <http://www.google.com/search?q=ubound+asp>
>
>
> Ubound giver indeks-værdien på det sidste element i et array.

Tak!

>
>test-side her:
> > http://www.skoliose.dk/medlem/test.asp
>
> Fint - man kan dog ikke tilføje noget (jeg bliver sendt videre til
> en login-side).
>
Det er nu rettet! (kl. 13.15)

Gitte

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Gitte Lauritsen (29-03-2004)
Kommentar
Fra : Gitte Lauritsen


Dato : 29-03-04 11:59

Jeg glemte lige en ting:

Jens GyldenkærneClausen wrote

> Men det kan ikke betale sig at skrive filen først og derefter læse
> den igen - det er dobbelt arbejde.
>
> Start i stedet med at læse og udskrive filen (evt. begrænset til de
> sidste 10 linjer), tilføj derefter den nye linje (udskriv form-
> requestet) og put endelig den nye linje ned i tekstfilen.
>
> Jeg ved ikke om der er en god måde at hive fat i de sidste 9-10
> linjer på (hvis du vil have 10 linjer udskrevet og der er 1 linje
> fra form-requestet, så skal du kun læse 9 fra filen) - men en mulig
> fremgangsmåde er følgende:
>
> 1) Åbn filen
> 2) Opret et array med alle linjer i filen (måske kan det gøres med
> split på et linjeskift, ellers må du løbe filen igennem med
> readline)
> 3) Tag de sidste 9 værdier fra arrayet (Max(0, Ubound(array)-9) -
> Ubound(array) og udskriv dem - dels til skærmen og dels til filen
> 4) Tilføj den nye linje.
>
>
Hvordan laver jeg et area der henviser til alle linier i en
tekst-fil?
Det har jeg ikke kunnet finde nogensteder.

Gitte

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Gitte Lauritsen (29-03-2004)
Kommentar
Fra : Gitte Lauritsen


Dato : 29-03-04 12:28


>
> Jens GyldenkærneClausen wrote

> > 2) Opret et array med alle linjer i filen (måske kan det gøres med
> > split på et linjeskift, ellers må du løbe filen igennem med
> > readline)
> > 3) Tag de sidste 9 værdier fra arrayet (Max(0, Ubound(array)-9) -
> > Ubound(array) og udskriv dem - dels til skærmen og dels til filen
> > 4) Tilføj den nye linje.
> > >


>Hvordan laver jeg et area der henviser til alle linier i en
>tekst-fil?

Sorry! jeg mente array

>
> Gitte
>

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jens Gyldenkærne Cla~ (29-03-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 29-03-04 12:08

Gitte Lauritsen skrev:

> Hvordan laver jeg et area der henviser til alle linier i en
> tekst-fil?

Hvad mener du? Et textarea eller et link-area eller noget tredje?

NB: Du må gerne klippe lidt i dine citater.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jens Gyldenkærne Cla~ (29-03-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 29-03-04 21:48

Gitte Lauritsen skrev:

> Man kan ikke bare bytte om i koden.
> Se fejl på test-siden

Hvilken fejl? Her virker det næsten - der er bare en postgangs
forsinkelse på at vise teksten.

Det er fordi du først læser og udskriver filen og dernæst tilføjer
formteksten til filen - men ikke udskriver formteksten til skærmen.

Prøv at bruge

' Hent ny tekst
Dim kommentar
kommentar = Request.Form("kommentar")

' Åbn fil og udskriv nuværende tekst
(samme kode som nu)

' Udskriv den nye linje:
Response.write kommentar & "<br>"

' Gem den nye linje
(samme kode som nu)



> Jeg kan godt leve med at filen bliver erstattet, når nogle
> tilføjer nyt.

Det vil ikke fungere godt. Hvis du kun gemmer én linje vil man
aldrig se mere en én persons indlæg ad gangen. Og hvis der er flere
samtidige brugere, kan et indlæg nemt blive overskrevet 2 sekunder
efter at det er skrevet.


> Måske er det for svæt for mig med de sidste 10
> linier. Jeg vil dog gerne prøve...

En helt anden mulighed er at finde et mere eller mindre færdigt
chat-script. Her er et lille udpluk fra Google:

<http://www.haneng.com/Lessons_3.asp>
<http://www.hotscripts.com/ASP/Tips_and_Tutorials/Chat_Scripts/>

Jeg har ikke prøvet nogle af dem.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Gitte Lauritsen (30-03-2004)
Kommentar
Fra : Gitte Lauritsen


Dato : 30-03-04 11:40

Hej Jens - og tak fordi du hjælper!!

Nu har jeg fået den til at virke sådan at der er dobbelt linieskift,
når en ny skriver og enkelt linie skift, når du laver ny linie i den
tekst du skriver.
Jeg kan ikke få den til at lave ny linie, når der er en ny der
skriver, ved blot at tilføje &"<br>" efter resopnes.write.

Jeg har også problemer med kommentarene, da jeg efterhånden bliver i
tvivl om, hvad der gør hvad.

Jeg har forsøgt at indele tekstfilen i array som adskilles ved <br>,
men jeg ved ikke hvordan jeg skal kalde de sidste 10 linier i
tekstfilen.

Her mine kommentarer til det du skrev sidst:

Jens GyldenkærneClausen wrote
>
> Hvilken fejl? Her virker det næsten - der er bare en postgangs
> forsinkelse på at vise teksten.
>
Jeg fik rette fejlen inden du besøgte siden.

> Det er fordi du først læser og udskriver filen og dernæst tilføjer
> formteksten til filen - men ikke udskriver formteksten til skærmen.
>
Hvori ligger forskellen på at skrive til filen og skrive til skærmen?
Jeg troede at jeg udskrev til skærmen i den kode med filespec,1
Jeg er ved at blive lidt rundtosset med hvornår man skriver til
skærm, til fil, og hvornår man henter fra fil til læsning.

> Prøv at bruge
>
> ' Hent ny tekst
> Dim kommentar
> kommentar = Request.Form("kommentar")
>
> ' Åbn fil og udskriv nuværende tekst
> (samme kode som nu)
>
> ' Udskriv den nye linje:
> Response.write kommentar & "<br>"
>
> ' Gem den nye linje
> (samme kode som nu)
>
>
Det er mit indtryk, at hvis jeg ikke først læser og udskriver filen,
så kan man ikke se det man tilføjer, når man klikker på Tilføj - ikke
før man reloader siden.

>
> > Jeg kan godt leve med at filen bliver erstattet, når nogle
> > tilføjer nyt.
>
> Det vil ikke fungere godt. /hvis der er flere
> samtidige brugere, kan et indlæg nemt blive overskrevet 2 sekunder
> efter at det er skrevet.
>
Ja, jeg ved det godt. Dette er for mig også mest en øvelse, som så
måske kan bruges alt efter hvordan jeg kan få det til at fungere.
>

> En helt anden mulighed er at finde et mere eller mindre færdigt
> chat-script. Her er et lille udpluk fra Google:

Ja, jeg kender godt til sådanne færdige scripts, og jeg har også fået
sat en gæstebog op på denne måde.
Jeg vil dog gerne selv kunne lave lidt mere med asp, og derfor har
jeg forsøgt mig med et forholdsvist simplet script.
Jeg har anskaffet bogen 'Grundlæggende programering med ASP' af Ole
Kristian Mose. Det er dog meget tungt, og jeg har derfor brug for at
arbejde konkret med nogle rigtige eksempler indimellem - som nu.
Jeg benytter mig også af
http://www.devguru.com/Technologies/asp/quickref/asp_intro.html
som opslagsværk, selvom mit engelske ikke er i top.

Jeg har allerede lært en del ved at arbejde med dette script, som du
hjælper mig med, selvom det selvfølgeligt var rart, om jeg kunne få
det til at udskrive de sidste 10 linier i tekstfilen.

Jeg har lagt det nye ud på test-siden:
http://skoliose.dk/medlem/test.asp
(koden er nu nederst på siden)

Hilsner fra Gitte

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste