22. november 2002 - 15:47Der er
11 kommentarer og 1 løsning
Sorter efter filnavn / skriv filnavn uden extension
Hej!
Jeg benytter FSO til at liste en masse billeder. De hedder 1.jpg, 2.jpg etc. Jeg vil gerne lave en SORT BY file.name - forstår i? Således at den tager 1, 2, 3, 4... og så vil jeg gerne kunne skrive file.name uden at den tager extension med! Så jeg her et billede og nedenunder står der kun 1 og ikke 1.jpg!
Her er det jeg benytter (vist nok en gammel eagleeye ting!):
<% Set FSO = Server.CreateObject("Scripting.FileSystemObject") myPath = server.MapPath("/pic/") Set folder = FSO.GetFolder(myPath) %> <table border="0" width="500">
<% noColPrRow = 0 maxColsPrRow = 4 for each file in folder.files indexExt = inStrRev(file.name, ".") if indexExt > 0 then fileExt = lcase(mid(file.name,indexExt+1)) else fileExt = "" end if
if fileExt = "jpg" OR fileExt = "jpeg" OR fileExt = "gif" then if noColPrRow = 0 then Response.Write "<tr>" end if %> <td><img src="../pic/<%=file.name%>" alt="<%=file.name%>" width="100"><br><font size="2" face="Verdana"><%=file.name%></font></td> <% noColPrRow = noColPrRow + 1 if noColPrRow = maxColsPrRow then Response.Write "<tr>" noColPrRow = 0 end if
Hvis du ved at de alle sammen hedder .jpg eller .gif eller sådan noget kunne du jo evt. trimme de sidste 4 tegn fra dit filnavn og så sortere derefter?
Jeg har prøvet en del forskellige løsninger og kogt ting sammen jeg fundet...
Se: <%
Private Sub BubbleSort(byRef arrTemp, byVal sDim, byVal sSort)
' Developer: Dennis Knappe (dennis@activeserverpages.dk)
Dim n, y,t,tmpTop, tmpVal, iBookMark, BubbleElement BubbleElement = False
For n = 0 To UBound(arrTemp,2) tmpTop = arrTemp(sDim,n) iBookmark = n
For y = n To UBound(arrTemp,2) If sSort = 0 Then If (tmpTop > arrTemp(sDim,y)) Then BubbleElement = True End If Else If (tmpTop < arrTemp(sDim,y)) Then BubbleElement = True End If End If
If BubbleElement Then tmpTop = arrTemp(sDim,y) iBookmark = y BubbleElement = False End If Next
For t = 0 to UBound(arrTemp, 1) tmpVal = arrTemp(t, n) arrTemp(t, n) = arrTemp(t, iBookmark) arrTemp(t, iBookmark) = tmpVal Next Next
End Sub
Function ShowFolderList()
Dim i,tmp tmp = "" i = 0 Dim arrFiles(100)
Set FSO = Server.CreateObject("Scripting.FileSystemObject") myPath = server.MapPath("/beta/links/GSML/") Set folder = FSO.GetFolder(myPath) for each file in folder.files 'tmp = tmp & file.name arrFiles(i) = file.name i = i + 1 Next
Call BubbleSort(arrFiles, 0, 1)
for q = 0 to i tmp = tmp & arrFiles(i) next ShowFolderList = tmp End Function
Det er fordi den sortere det som tekst og ikke som tal. Som tekst sammenligner den karakter for karakter og dermed er 10 mindre end 2 for 1 er mindre end 2.
If sSort = 0 Then If (tmpTop > arrTemp(sDim,y)) Then BubbleElement = True End If Else If (tmpTop < arrTemp(sDim,y)) Then BubbleElement = True End If End If
Til:
If sSort = 0 Then If (Int(tmpTop) > Int(arrTemp(sDim,y))) Then BubbleElement = True End If Else If (Int(tmpTop) < Int(arrTemp(sDim,y))) Then BubbleElement = True End If End If
men så skal alle filer være med filnanvet som tal.
Jeg ved ikke om det er mig der er helt blank?! (det er det jo nok!) Men jeg har sgu prøvet at sætte mig ind i det... testet og testet - men det virker stadig ikke:
<%
Private Sub BubbleSort(byRef arrTemp, byVal sDim, byVal sSort)
' Developer: Dennis Knappe (dennis@activeserverpages.dk)
Dim n, y,t,tmpTop, tmpVal, iBookMark, BubbleElement BubbleElement = False
For n = 0 To UBound(arrTemp,2) tmpTop = arrTemp(sDim,n) iBookmark = n
For y = n To UBound(arrTemp,2) If sSort = 0 Then If (Int(tmpTop) > Int(arrTemp(sDim,y))) Then BubbleElement = True End If Else If (Int(tmpTop) < Int(arrTemp(sDim,y))) Then BubbleElement = True End If End If
If BubbleElement Then tmpTop = arrTemp(sDim,y) iBookmark = y BubbleElement = False End If Next
For t = 0 to UBound(arrTemp, 1) tmpVal = arrTemp(t, n) arrTemp(t, n) = arrTemp(t, iBookmark) arrTemp(t, iBookmark) = tmpVal Next Next
End Sub
Function ShowFolderList()
Dim i,tmp tmp = "" i = 0 Dim arrTemp(100)
Set FSO = Server.CreateObject("Scripting.FileSystemObject") myPath = server.MapPath("/beta/links/GSML/off/") Set folder = FSO.GetFolder(myPath) for each file in folder.files tmp = tmp & Replace(file.name,"off.jpg","") arrTemp(i) = Replace(file.name,"off.jpg","") i = i + 1 Next
Call BubbleSort(arrTemp, 0, 1)
for q = 0 to i tmp = tmp & arrTemp(i) next ShowFolderList = tmp End Function
Private Sub BubbleSort(byRef arrTemp, byVal sDim, byVal sSort)
' Developer: Dennis Knappe (dennis@activeserverpages.dk)
Dim n, y,t,tmpTop, tmpVal, iBookMark, BubbleElement BubbleElement = False
For n = 0 To UBound(arrTemp,2) tmpTop = arrTemp(sDim,n) iBookmark = n
For y = n To UBound(arrTemp,2) -1 If sSort = 0 Then If (Int(tmpTop) > Int(arrTemp(sDim,y))) Then BubbleElement = True End If Else If (Int(tmpTop) < Int(arrTemp(sDim,y))) Then BubbleElement = True End If End If
If BubbleElement Then tmpTop = arrTemp(sDim,y) iBookmark = y BubbleElement = False End If Next
For t = 0 to UBound(arrTemp, 1) tmpVal = arrTemp(t, n) arrTemp(t, n) = arrTemp(t, iBookmark) arrTemp(t, iBookmark) = tmpVal Next Next
End Sub
Function ShowFolderList()
Dim i,tmp tmp = "" i = 0 Dim arrTemp(100)
Set FSO = Server.CreateObject("Scripting.FileSystemObject") myPath = server.MapPath("/beta/links/GSML/off/") Set folder = FSO.GetFolder(myPath) for each file in folder.files tmp = tmp & Replace(file.name,"off.jpg","") arrTemp(i) = Replace(file.name,"off.jpg","") i = i + 1 Next
Call BubbleSort(arrTemp, 0, 1)
for q = 0 to i tmp = tmp & arrTemp(i) next ShowFolderList = tmp End Function
>> medions: har du selv testet det?? Det virker ikke her; siden vil ikke vises!
Jeg er ligeglad med hvordan løsningen bliver strikket sammen; den behøver ikke tage udgangspunkt i det jeg har postet! Jeg har hævet pointsatsen da det åbenbart ikke er lige til; håber at det kan motivere nogen derude!
Jeg lukker spørsgmålet! Ingen svar der kunne bruges... eller som jeg kunne stykke sammen. Kan til andre sige: JEG FANDT EN LØSNING!
1.jpg omdøbte jeg bare til 01.jpg
Måske lidt palt - WHAT THE HECK - det virker!
Og for at fjerne det overskydende nul: Round(strTal,1)
vagn / 16
Synes godt om
Ny brugerNybegynder
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.