webForumDet fria alternativet

Logiskt fel?

ASP

4 svar · 419 visningar · startad av M@rtin

Medlem sedan dec. 19992 085 inlägg
Frågan#1

Jag har slitit med den här lilla kodsnutten hela dagen men jag får den inte att fungera. Tycker jag provat allt! Känns som att man inte kan lita på att asp utför kollen i while loopen exakt varje gång utan typ går händelserna i förväg. Det som händer är nämligen att det nya namnet skrivs ut flera gånger i rad, oftast 3 men ibland 2 eller 4. Här är koden:

i=1
Do While i<11
   if CDbl(hiArray(0,i))<CDbl(time_elapsed) then
      newArray(0,i) = hiArray(0,i)
      newArray(1,i) = hiArray(1,i)
      i = i + 1
   else
      newArray(0,i) = time_elapsed
      newArray(1,i) = nickname
      m=i+1
      i=1000
      Do while m<11
         newArray(0,m) = hiArray(0,m-1)
         newArray(1,m) = hiArray(1,m-1)
         m = m + 1
      Loop
   end if
loop

hiArray(0,x) innehåller tiden (som ska vara så låg som möjligt)
hiArray(1,x) innehåller namnet.

Mycket tacksam om någon kan se varför det inte fungerar!

Medlem sedan dec. 19992 085 inlägg
#2

Efter några timmars ytterligare funderande har jag kommit fram till att den där koden förmodligen var fungerande och att felet ligger i skrivandet till textfilen som jag har datan sparad i.

Min kod för att skriva till textfilen är:

Set filetxt = filesys.CreateTextFile(Server.Mappath( "\keys" ) & "\hiscore.txt",True) 
filetxt.WriteLine "hiscore="
for s=1 to 10
   filetxt.WriteLine(newArray(2,s) & newArray(0,s) & " " & newArray(1,s)) 
next
filetxt.Close

Den nya arraydimensionen newArray(2,s) innehåller " 1", " 2" o.s.v. upp till "10".

Denna kod fungerar precis som den ska, det märkliga är att när jag vill ha ett mellanslag mellan numret och tiden (som finns i andra arrayen) så blir det ett jättekonstigt fel som suddar 1-3 tecken i varje sträng så att allting blir jättekonstigt.

Detta fungerar alltså inte:
filetxt.WriteLine(newArray(2,s) & " " & newArray(0,s) & " " & newArray(1,s))

Är det någon konstig bieffekt av någon FSO funktion jag råkat stöta på eller är jag helt enkelt dum i huvudet?

Medlem sedan dec. 20003 887 inlägg
#3

Prova med att använda ett annat tecken, till exempel kolon. Det kan ju vara ett enkelt sätt att se om mellanslag orsakar fel då FSO försöker översätta.

Medlem sedan dec. 19992 085 inlägg
#4

Det har jag oxå testat men det verkar inte spela någon roll vilket tecken jag försöker lägga in. Jag tycker inte raden kan bli för lång heller för det är bara runt 30 tecken i varje rad så det borde inte vara något problem.

Medlem sedan dec. 19992 085 inlägg
#5

Jag hittade felet, det var inget fel i koden utan fel i flash filen som anropade asp-scriptet. Scriptet anropades hela tiden tills det returnerade att det kört färdigt och på så vis hann flera script startas och köras parallellt innan det första kört klart så de skrev antagligen över varandra på något sätt.

Nu är det löst iaf!

252 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
114 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)