Desde hace un tiempo no he podido corregir un problema de manejo de texto en asp. La verdad que era algo básico, pero soy humano.
Muchos han programado un contador de visitas en asp mediante un archivo txt. Muchos además diran que es algo anticuado, idem, pero cuando se tiene algunas páginas escritas en ese código no queda más que recurrir a los respaldos, folletos, anotaciones y finalmente a internet.
El tema en cuestión es el típico contador de visitas sin usar base de datos, el llamado count.txt alojado en la raíz. Por la red circula muchos apuntes del tipo
set act = fso.opentextfile(server.mappath(”count.txt”))
pero carecen del tipo de apertura y de escritura del mismo. La solución la encontré en la siguiente página.
Ahora veamos el problema y la solución, en negrita la corrección.
<%
set fso = createobject(”scripting.filesystemobject”)
set act = fso.opentextfile(server.mappath(”count.txt”))
counter = clng(act.readline)
counter = counter + 1
act.close
Set act = fso.CreateTextFile(server.mappath(”count.txt”), true)
act.WriteLine(counter)
act.Close
Set act=nothing
Set fso=nothing
Response.Write counter
%>
Lo Correcto sería
<%
Const fsoLectura = 1
Const fsoEscritura = 2
Const fsoAnadir = 8
set fso = createobject(”scripting.filesystemobject”)
set act = fso.opentextfile(server.mappath(”count.txt”), fsoLectura,true,true)
counter = clng(act.readline)
counter = counter + 1
act.close
Set act = fso.CreateTextFile(server.mappath(”count.txt”), fsoEscritura,true)
act.WriteLine(counter)
act.Close
Set act=nothing
Set fso=nothing
Response.Write counter
%>
Lo que hace el método [fsoLectura,true,true] es abrir el archivo en modo de lectura, crea el archivo si no existe y lo abre en modo unicode. Este era el gran problema, la lectura se hacía en modo ASCII por lo que generaba un error del tipo (0×800A000D) No coinciden los tipos: ‘CLng‘.
Espero que sirva para recordar y corregir.
