Avatar billede whatever Nybegynder
05. november 2001 - 23:10 Der er 10 kommentarer og
1 løsning

Problemer med FSO

Hej

Jeg har lavet en counter til et website.
Counteren kan kun ses i administrationen.
Hvis txt-filen til counteren ikke eksisterer, oprettes den automatisk.
Det er muligt, at nustille counteren. Dette gøres ved at txt-filen bliver slettet.

Nu er problemet så, at når counteren nulstilles. Skulle tidspunktet for oprettelsen af filen, gerne ændre sig. Men det gør det ikke. Dvs. at hvis man venter ca. 10 minutter, mellem man sletter filen og opretter en ny, virker det. Men ellers ikke.

Counteren opdateres når man besøger denne side:
http://www.whateverworld.dk/aktivfritid

Og her kan man se/nulstille counteren (den er bruger counteren)
http://www.whateverworld.dk/aktivfritid/admin

Hvad kan denne forsinkelse skyldes?
Avatar billede whatever Nybegynder
05. november 2001 - 23:10 #1
Counteren nulstilles ved at klikke på (N).
Avatar billede trumf Nybegynder
05. november 2001 - 23:23 #2
Umiddelbart tror jeg det kan have noget at gøre med sessionstider. Prøv at nulstille og gå ind igen med et andet browservindue.
Avatar billede whatever Nybegynder
05. november 2001 - 23:25 #3
Det hjælper heller ikke :-(
Avatar billede trumf Nybegynder
05. november 2001 - 23:29 #4
Der sker slet ikke noget når der nulstilles.
Hvordan ser koden ud ?
Avatar billede whatever Nybegynder
05. november 2001 - 23:29 #5
Her kommer den. Det er en række funktioner som kaldes på startsiden og i admin-delen:

<%

    \' ------------------------------------------------------------------------------------
    \' OPDATERER BRUGER COUNTEREN
    \'  - hvis filen ikke eksisterer, oprettes denne.
    \' ------------------------------------------------------------------------------------   
    Public Function updateUserCounter(path)
        If Session(\"Count\") <> true Then
            Set fso = CreateObject(\"Scripting.FileSystemObject\")
            If fso.FileExists(path) Then
                Set f = fso.GetFile(path)
                If f.size <> \"0\" Then
                    Set f = fso.OpenTextFile(path,1,False)
                    c = f.ReadAll
                    f.Close   
                Else
                    c = 0
                End If
            Else
                Set f = fso.CreateTextFile(path, True)
                f.Close   
                c = 0
            End If
            Set f = fso.OpenTextFile(path,2,False)
            c = c + 1
            f.Write c
            f.Close   
            Session(\"Count\") = true
        End If
    End Function


    \' ------------------------------------------------------------------------------------
    \' OPDATERER ORDER COUNTEREN
    \'  - hvis filen ikke eksisterer, oprettes denne.
    \' ------------------------------------------------------------------------------------   
    Public Function updateOrderCounter(path)
        Set fso = CreateObject(\"Scripting.FileSystemObject\")
        If fso.FileExists(path) Then
            Set f = fso.GetFile(path)
            If f.size <> \"0\" Then
                Set f = fso.OpenTextFile(path,1,False)
                c = f.ReadAll
                f.Close   
            Else
                c = 0
            End If
        Else
            Set f = fso.CreateTextFile(path, True)
            f.Close   
            c = 0
        End If
        Set f = fso.OpenTextFile(path,2,False)
        c = c + 1
        f.Write c
        f.Close   
    End Function


    \' ------------------------------------------------------------------------------------
    \' UDSKRIVER INDHOLDET AF COUNTEREN
    \'  - hvis filen ikke eksisterer, oprettes denne.
    \'  - hvis filen er tom, skrives der er nul i denne.
    \' ------------------------------------------------------------------------------------   
    Public Function showCounter(path)
        Set fso = CreateObject(\"Scripting.FileSystemObject\")
        If fso.FileExists(path) Then
            Set f = fso.GetFile(path)
            If f.size <> \"0\" Then
                Set f = fso.OpenTextFile(path,1,False)
                c = f.ReadAll
                f.Close   
            Else
                Set f = fso.OpenTextFile(path,2,False)
                c = 0
                f.Write c
                f.Close   
            End If
        Else
            Set f = fso.CreateTextFile(path,True)
            f.Close   
            Set f = fso.OpenTextFile(path,2,False)
            c = 0
            f.Write c
            f.Close   
        End If
        showCounter = c       
    End Function

    \' ------------------------------------------------------------------------------------
    \' UDSKRIVER OPRETTELSES DATOEN FOR TXT-FILEN TIL COUNTEREN
    \'  - hvis filen ikke eksisterer, oprettes denne.
    \' ------------------------------------------------------------------------------------   
    Public Function dateCreatedCounter(path)
        Set fso = CreateObject(\"Scripting.FileSystemObject\")
        If fso.FileExists(path) Then
            Set f = fso.GetFile(path)
            d = f.DateCreated
        Else
            Set f = fso.CreateTextFile(path,True)
            f.Close   
            Set f = fso.GetFile(path)
            d = f.DateCreated
        End If
        dateCreatedCounter = d
\'         dateCreatedCounter = Replace(Left(d,5),\"-\",\"/\")&\"-\"&right(Left(d,10),2)
    End Function


    \' ------------------------------------------------------------------------------------
    \' SLETTER TXT-FILEN FRA COUNTEREN
    \'  - sletter filen og vidersender brugeren
    \' ------------------------------------------------------------------------------------   
    Public Function deleteCounter(path)
        Set fso = CreateObject(\"Scripting.FileSystemObject\")
        fso.DeleteFile(path)
\'        Set f = fso.CreateTextFile(path,True)
\'        f.Close   
        Response.Redirect \"statsframe.asp\"
    End Function

%>
Avatar billede whatever Nybegynder
05. november 2001 - 23:31 #6
Hvis jeg sletter txt-filerne på serveren via ftp, virker det heller ikke.
Avatar billede whatever Nybegynder
05. november 2001 - 23:35 #7
På min lokale windows2000 sker det samme.
Avatar billede trumf Nybegynder
05. november 2001 - 23:52 #8
Umiddelbart kan jeg ikke se hvorfor du bruger \"If Session(\"Count\") <> true Then\" hvorfor bruger du ikke bare \"If isEmpty(session(\"count\")) Then\" hvis den overhovedet er nødvendig ?

Derudover har jeg lidt problemer med brugen af f at du lukker og derefter opretter igen...

      Set f = fso.CreateTextFile(path,True)
      f.Close   
      Set f = fso.GetFile(path)
      d = f.DateCreated
Avatar billede whatever Nybegynder
06. november 2001 - 00:00 #9
Du har nok ret i, at disse ting kunne laves smartere. Men det løser ikke mit problem. Ellers må jeg jo til, at lave det med en database.
Avatar billede trumf Nybegynder
06. november 2001 - 00:02 #10
altså samme navn.

Set f = fso.CreateTextFile(path,True)
f.Close 
Set f = Nothing 
Set dat = fso.GetFile(path)
d = dat.DateCreated
dat.Close
Set dat = Nothing

Nogen gange skal MS lige have tid til at bearbejde sagen.

Men det er jo slet ikke nødvendigt at checke datoen på filen når filen lige er oprettet.
d = Date

Så virker det da i hvert fald!
Avatar billede whatever Nybegynder
06. november 2001 - 00:08 #11
Fedt. Det virker.

Tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester