webForumDet fria alternativet

Vända ordningen FSO.SubFolders

ASP

4 svar · 556 visningar · startad av Sharkie

Medlem sedan okt. 20031 000 inlägg
Frågan#1

Jag rullar igenom en mapp med .SubFolders och presenterar dom i en lång rad uppifrån och ner. Men jag skulle vilja vända på ordningen istället.

Om det hjälper så är mapparna i datumformat: 2008-01-29 och jag vill då att senaste datumet ska visas överst och sen i fallande ordning nedåt.

Skulle det ha någon roll för din hjälp så är det inte en mapp för varje datum en tid bakåt utan det är nån "här och där" :)

Hoppas nån kan leda mig på rätt väg!

Medlem sedan juni 20014 421 inlägg
#2

Du får skriva en egen sorteringsalgoritm:
http://classicasp.aspfaq.com/files/directories-fso/how-do-i-sort-a-list-of-files.html

Ett annat alternativ (dock lite minneskrävande) är att skapa ett disconnectat recordset, lägga in alla namn och använda dess sort-metod, det hela kommer antagligen att bli snabbare än att skriva en egen sorteringsfunktion.

http://www.devguru.com/technologies/ado/QuickRef/recordset_sort.html
Läs om att skapa ett disconnected RS:
http://www.microsoft.com/technet/scriptcenter/resources/qanda/feb05/hey0225.mspx
http://sogeeky.blogspot.com/2006/08/vbscript-using-disconnected-recordset.html

Medlem sedan okt. 20031 000 inlägg
#3

Efter lite pill och tjaffs så fick jag http://classicasp.aspfaq.com/files/directories-fso/how-do-i-sort-a-list-of-files.html att funka tillsammans med mina koder och dumma idéer. Men den sorterar fortfarande åt fel håll - vad ändrar jag i koden för VBScript på länken ovan?

Medlem sedan juni 20014 421 inlägg
#4

Skönt att du valde den jobbigaste och långsammaste av dem. ;)

Själva sorteringslogiken är här:

            if strComp(fNames(tName),fNames(nName),0)=1 then 
                buffer = fNames(nName) 
                fNames(nName) = fNames(tName) 
                fNames(tName) = buffer 
            end if

Där kollas det om det aktuella indexet binärvärde är större än det sktuella indexet+1s binärvärde. Om det är så knuffar den upp index+1 en placering högre upp.
Detta sker ju i en loop så att den går igenom alla index mot varandra.

Kolla på hur http://www.w3schools.com/vbscript/func_strcomp.asp fungerar. Jag skulle dock rekomenderar recordset-vägen, det blir lättare och snabbare i längden.

Medlem sedan okt. 20031 000 inlägg
#5

Haha, jag tycket recordset-grejen såg krånglig ut men jag kanske ska testa den istället, det kommer bli många mappar till slut :/

"I'll be back!" ;)

255 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)