Autor: Loli Data: dj. juny 12, 2003 4:21 pm
¿Puede que sea el asp el que esté mal?
Es un poco largo, pero aquí te lo envio:
%
' ********************************************************************************
' Nom arxiu: puntuacio.asp
' ********************************************************************************
' Recull els noms i puntuacions pel joc flash de l'especial Sant Joan 2003
' @author Francesc Vila <fvila@lavinia.tc>
' @version 1.0 - 12/06/2003
' Lavinia TC (c) 2003
' ********************************************************************************
' Aquest mòdul reb dos paràmetres:
' nom (nom del jugador que puntua)
' puntuacio (puntuació del jugador)
' És requisit l'existència d'un fitxer de text que emmagatzema els resultats
' de les màximes puntuacions
' ********************************************************************************
Option Explicit
' Declaració de constants
Const MaxRanking = 10 ' Número màxim de jugadors que s'han de considerar en el ranking
Const ForReading = 1 ' Permís de lectura pel fitxer de puntuacions
Const ForWriting = 2 ' Permís d'escriptura pel fitxer de puntuacions
Const ForAppending = 8 ' Permís d'afegit pel fitxer de puntuacions
' Declaració de variables
Dim CharSeparadorItems ' Caràcter entre ítems del ranking
Dim CharSeparadorCamps ' Caràcter separador del nom del jugador i la seva puntuació
Dim nom ' Nom del jugador
Dim punts ' Puntuació del jugador
Dim sortir ' Sortir del programa
Dim nomFitxer ' Nom del fitxer de puntuacions
Dim rutaFitxer ' Ruta de disc del fitxer de puntuacions
Dim objFSO ' Objecte fitxer
Dim objTextStream ' Objecte stream del fitxer de texte
Dim arrRanking ' Llista amb el ranking de jugadors i puntuacions
Dim arrItemCamps ' Ítem del ranking (nom jugador + puntuacio)
Dim arrNouRanking ' Nou ranking generat
Dim idxItems ' Comptador per recorrer els ítems del ranking
Dim paginaDesti ' Pàgina destinació després de processar l'actualització del ranking
'Inicialització de variables
CharSeparadorItems = Chr(13) & Chr(10)
CharSeparadorCamps = Chr(6)
nom = Request.QueryString("nom")
punts = Request.QueryString("punts")
sortir = False
nomFitxer = "puntuacio.txt"
rutaFitxer = Server.MapPath("/") & "\especials\santjoan2003\" & nomFitxer
Set objFSO = Nothing
Set objTextStream = Nothing
arrRanking = Array()
arrItemCamps = Array()
arrNouRanking = Array()
idxItems = 0
paginaDesti = "veureresultats.asp"
' ********************************************************************************
' orderListBubble
' ********************************************************************************
' Funció que ordena la matriu de puntuacions, de la puntuació més alta a la més
' baixa, segons l'algoritme de la bombolla
' ********************************************************************************
Sub orderListBubble(ByRef list)
Dim i, j, n, tmp0, tmp1
n = UBound(list) - 1
For i = 0 to n
For j = 0 to i
'Response.Write ">>" & list(i, 1) & " >>" & list(j, 1) & "<br>"
If CInt(list(i, 1)) > CInt(list(j, 1)) Then
tmp0 = list(i, 0)
tmp1 = list(i, 1)
list(i, 0) = list(j, 0)
list(i, 1) = list(j, 1)
list(j, 0) = tmp0
list(j, 1) = tmp1
End if
Next
Next
End Sub
' Control entrada de dades
If Len(nom) = 0 Then ' S'ha d'haver especificat un nom
sortir = True
Elseif Len(punts) = 0 Then ' S'ha d'haver especificat una puntuació
sortir = True
Elseif Not isNumeric(punts) Then ' La puntuació indicada ha de ser numèrica
sortir = True
Elseif punts < 0 Then ' La puntuació indicada no ha de ser negativa
sortir = True
End If
If sortir Then
Response.End ' Sortir del programa
End If
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(rutaFitxer) Then ' Comprovar que el fitxer de puntuacions existeix
Set objTextStream = objFSO.GetFile(rutaFitxer)
If objTextStream.Size > 0 Then ' Si existeix alguna puntuació anterior
' Llegir puntuacions existents
Set objTextStream = objFSO.OpenTextFile(rutaFitxer, ForReading)
arrRanking = Split(objTextStream.ReadAll, CharSeparadorItems)
ReDim arrNouRanking (UBound(arrRanking)+1, 2)
For idxItems = 0 To UBound(arrRanking) - 1
arrItemCamps = Split(arrRanking(idxItems), CharSeparadorCamps)
arrNouRanking(idxItems, 0) = arrItemCamps(0)
arrNouRanking(idxItems, 1) = arrItemCamps(1)
Next
' Afegir nova puntuació
arrNouRanking(idxItems, 0) = nom
arrNouRanking(idxItems, 1) = punts
objTextStream.Close
' Ordenar ranking de puntuacions
orderListBubble arrNouRanking
'For idxItems = 0 To UBound(arrNouRanking) - 1
' Response.Write "Reading >> " & arrNouRanking(idxItems, 0) & CharSeparadorCamps & arrNouRanking(idxItems, 1) & "<br>"
'Next
' Desar el ranking
Set objTextStream = objFSO.OpenTextFile(rutaFitxer, ForWriting)
For idxItems = 0 To UBound(arrNouRanking) - 1
objTextStream.WriteLine arrNouRanking(idxItems, 0) & CharSeparadorCamps & arrNouRanking(idxItems, 1)
Response.Write "Writing >> " & arrNouRanking(idxItems, 0) & CharSeparadorCamps & arrNouRanking(idxItems, 1) & "<br>"
If idxItems = MaxRanking - 1 Then ' Si es supera la fita màxima no es desen la resta de puntuacions
Exit For
End If
Next
objTextStream.Close
Set objTextStream = Nothing
Else
' Si no existia cap puntuació aleshores inserir la primera en el ranking
Set objTextStream = objFSO.OpenTextFile(rutaFitxer, ForWriting)
objTextStream.WriteLine nom & CharSeparadorCamps & punts
Response.Write "Writing >> " & nom & CharSeparadorCamps & punts
objTextStream.Close
Set objTextStream = Nothing
End If
Set objFSO = Nothing
End If
'Response.Redirect paginaDesti
%>