Jag har ett enkelt ASP script som listar filer och kataloger. Det fungerar som det ska för det ska förutom en sak, bokstavsordningen.
Om filerna exempelvis är döpta A1, A2 osv. upp till ex A11
så blir listar scriptet A1, A10, A11, A2, A3 osv.
Hur skriver jag om scriptet så att det listar "rätt" ordning?
Sub ListFolder(path)
Dim fs, folder, item
Set fs = CreateObject("Scripting.FileSystemObject")
Set folder = fs.GetFolder(path)
For each item in folder.Files
Response.Write("<div class='file'>" & item.Name & "</div>" & vbCrLf)
Next
For each item in folder.SubFolders
Response.Write("<h3 class='foldername'>" & item.Name & "</h3>" & vbCrLf & "<div class='files'>")
call ListFolder(item.Path)
Response.Write("</div>" & vbCrLf)
Next
End Sub
Det finns inga standardmetoder i FSO för att sortera om datat, sorteringsordningen är den som är satt på mappen i Windows. Det finns ett par lösningar (om du inte kan ändra sorteringen på mappen i Windows eller via API), men de är ju inte snygga;
1. Loopa ut datat i en array eller ett dictionary och gör en sk- Bubble sort på det (ineffektivt)
2. Loopa ut datat i ett ADODB.Recordset och sortera det med dess inbyggda funktioner (resurskrävande/ineffektivt)
Avsaknaden av ordentliga collections (samlingar) i ASP gör att sådana här problem uppstår. :)
Detta är väl att kategorisera som ett grundläggande fel i Windows, alla versioner.
Windows? Snarare i Scripting FilesystemObject, inget annat. Sorteringen i Windows fungerar ju fortfarande. Sen kan man ju undra vad Mac OS har med saken att göra.. :q