18. august 2003 - 16:29Der er
12 kommentarer og 1 løsning
problemer med skrivning til fil
Jeg har to steder på min hjemmeside, hvor der først bliver læst fra, dernæst skrevet til, en tekst fil, via et ASP-script. Problemet er at efter 5-6 gange bliver de første 8 tegn erstattet af noget der ligner eksperimenter med ASCII-koder, scriptet ser ud som følger:
Dim fso, f, filespec, tao
Set fso = CreateObject("Scripting.FileSystemObject") filespec = Server.Mappath("log.txt") Set f = fso.OpenTextFile(filespec,1)
jeg antager, at du hver gang du vil tilføje noget, så skal det ske som noget tekst plus et linieskift (et tekstfil-linieskift) Der kan tilføjes linieskift i VBscript på denne måde:
tekst= nylinie & VbCrLf & tekst
VbCrLf er blot tegn 13 efterfulgt af tegn 10. Du sætter html-koder ind istedet.
Jeg har ikke tid til at teste det lige nu, men gør det senere.
"blot tegn efterfulgt af tegn 10" Den er jeg ikke helt sikker på jeg forstår? Linjeskiftet skal ske med et HTML-linjeskift, da jeg senere putter teksten ind i hjemmesiden med SSI, derfor skal den også være færdig-fomatteret når den bliver lagt i tekstfilen.
Nå jeg testede det lige. Nu har jeg tilføjet VbCrLf tile sidst i det, som du tilføjer. Altså således: f.Writeline "<strong>"&Session("users")&"</strong><br>"&now&"<p>"& VbCrLf & tao
Det betyder, at der laves en tekstfil med rigtige linieskift, og når den sendes til en html-side, så ignoreres vbcrlf, og så er det <br> og <p> der sørger for linieskift.
Nu har jeg 20gange tilføjet noget og det ser ud, som det skal.
Jeg har også testet i en Browser, og alt er OK. Fede typer, linieskift i Browseren etc. Alt er OK Og nu kan man se filen med rigtige linieskift også i f.eks. notepad-editoren.
ok, jeg har sporet det ned til at den erstatter tegnene hvis det er at det første eller sidste i linjen er html-tags.... Nogen der ved hvorfor den gør det, og hvordan man kommer det til livs?
men jeg skrev jo linier, der netop havde formen <strong>.... og der kom ingen problemer. (Jeg kørte det godt nok som et VBscript på minegen maskine, men det skulle ikke betyde nogen forskel).
jeg har ændret lidt i scriptet, paster det lige for at holde folk opdateret:
Dim fso, f, filespec, tao
Set fso = CreateObject("Scripting.FileSystemObject") filespec = Server.Mappath("guestbook.txt") Set f = fso.OpenTextFile(filespec,1)
tao = f.ReadAll
dim bruger, str, msg, user, mail mail = Session("gre") msg = Request("message") bruger = Session("users")
Set f = fso.OpenTextFile(filespec,2)
f.Writeline "<strong> <a href='mailto:"&mail&"'>"&Request("tagname")&"</a></strong>" f.writeline "<br>"& msg & "<br>"&date&"<br>"& tao
f.Close
Nu lukker den ikke filen 2 gange, og jeg har delt den lange linje lidt op. Vil det monstro hjælpe hvis jeg læser filen en linje ad gangen, istedet for på en gang?
Du kan da prøve. Men hvis du vil læse en linie ad gangen, skal du tilføje linieskift (altså VBCrLf). <br> og <p> er kun noget browseren vil reagere på.
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.