21. marts 2005 - 17:40Der er
18 kommentarer og 2 løsninger
Gruppering af filer via FSO
Hej,
Jeg har nogle filer kaldet type1-1 type1-2 type1-3, type2-1, type3-1,type3-2,type4-1,type4-2,type4-3
Det jeg ønsker er at kunne få dem grupperet i en tabel, hvor alle type1-x står på en række for sig og alle type2-x osv.
Jeg kan sagtens finde ud af at lave et kald hvor jeg løber samtlige af mine filer i det bibliotek igennem, men kan ikke få dem grupperet, nogle der har en god ide??
<%
Dim fso, f, files, folderspec folderspec = Server.Mappath("../template/")
' Start File System Objectet... Set fso = Server.CreateObject("Scripting.FileSystemObject") Set rootFolder = fso.GetFolder(folderspec) Set files = rootFolder.Files
parentFile = 1
For Each file in files extension = fso.GetExtensionName(file) if extension = "asp" then fileToCheck = replace(file.name,"type","") fileToCheck = left(fileToCheck,1)
if int(fileToCheck) = int(parentFile) then imageFile = replace(file.name,".asp",".gif") response.Write(file.name & "<img src=../template/" & imagefile & ">") else response.Write("<br>") end if
parentFile = fileToCheck
end if
next
' Ryd op..
set fso = nothing set f = nothing set files = nothing set folderSpec = nothing
Hvad med at knalde dem ind i et stort dobbeltsidet array?
Når du har hentet alle dine filer ind, løber du dem igennem, og fjerner "type". Herefter kan du lave en split på resten så du har dine koordinater.
Fx. støder du ind type1-1, vil det blive til (1,1) i dit array.
Hvis ikke du kender længen eller bredden af dit array, må du gemme max værdierne mens du kører dem igennem, og først indsætte dem bagefter. Dvs. du knalder først alle værdierne (modfificeret) ind i et tempArray (enkeltsidet).
Når du har fyldt dit array ud, kan du loope det igennem og så har du din tabelopbygning.
Hehe, det vil tage tid at lave et eksempel, det ser ud som om du sagtens kan skrive VB-Script, og man lærer bedst af at skrive det selv.
jeg bidrager med ideen, der var det du manglede. Du skal være velkommen til at fyre koden ind i dette spg. så skal jeg gerne hjælpe dig med problemer undervejs.
Hmm ikke sikker jeg helt forstår... nu har jeg lavet nedenstående som hiver det ind i et array men hvordan gruppere jeg dem... forstår ikke helt hvordan jeg får det i en dbl. sidet arry ?
Dim fso, f, files, folderspec folderspec = Server.Mappath("../template/")
' Start File System Objectet... Set fso = Server.CreateObject("Scripting.FileSystemObject") Set rootFolder = fso.GetFolder(folderspec) Set files = rootFolder.Files
For Each file in files extension = fso.GetExtensionName(file)
if extension = "asp" then fileToCheck = replace(file.name,"type","") fileToCheck = replace(fileToCheck,".asp","")
' Ligger filnavne ind i et dbl. array tempArry = fileToCheck & "," & tempArry
Du skal have et midlertidigt array til at opbevare dine modificerede fil navne, eftersom du først er nødt til at tjekke hvor stort du skal dimensionere dit dobbeltsidet array og oprette det før du kan sætte værdierne derind.
Inden du kører værdierne i et temparray, skal du lige lave en split og tjekke om værdierne er højere end dem du starter med. Det er dem du skal bruge til at oprette dit dobbelt sidet array med.
Et dobbeltsidet array (3*3 Array), Oprettelse: Dim aryMenu(3)
Tænkte nok der var en bedre måde at oprette et dobbelt array, men kunne i lige komme i tanke om det:) Nice by the way!
mortendahl2003 >> Mener du med oprettelsen af arrayet eller hur? Jeg har heller ikke efterprøvet det, men det funker inde i mit hovede, altså hele ideen:) Det jeg tilføjede var blot en mulig måde at oprette arrayet på ikke initialisere det.
Hvis du opretter et 2-dimensionel array, så står de for antal rækker og kolonner. F.eks redim arr(3, 3) arr(0, 0) = "et eller andet" arr(0, 1) = "noget nyt" ... arr(3, 3) = "mere tekst" ... Nu finder du så ud af at der skal være mere plads.
redim preserve arr(4, 3) arr(4, 0) = "og så videre"
I dit tilfælde ved du måske ikke hvor mange rækker og kolonner du har brug for. Men du klipper tallene ud af dit filnavn, og stopper navnene ind idit array. Altså arr(0, 0) = "type0-0" arr(0, 1) = "type0-1" osv. Men for at være sikker på at du ikke går udover grænserne for dit array, skal du redimensionere det, hvis et af tallene bliver for store.
<% Dim fso, f, files, folderspec folderspec = Server.Mappath("../template/")
' Start File System Objectet... Set fso = Server.CreateObject("Scripting.FileSystemObject") Set rootFolder = fso.GetFolder(folderspec) Set files = rootFolder.Files
Const rows = 10 Const cols = 10
ReDim aryCells(rows, cols)
For row = 0 To rows - 1 For col = 0 To cols - 1 aryCells(row, col) = "" Next Next
For Each file in files extension = fso.GetExtensionName(file)
For row = 0 To rows - 1 %><tr><% For col = 0 To cols - 1 %><td><% If aryCells(row, col) <> "" Then image = replace(aryCells(row, col),".asp",".gif") Response.Write("<input type=""radio"" name=""TemplateId"" value=""" & aryCells(row, col) & """><img src=""../template/" & image & """>") End If %></td>
<% Next %></tr>
<tr><td colspan="10" bgcolor="#000000"></td></tr> <% Next
%></table><%
set fso = nothing set f = nothing set files = nothing set folderSpec = nothing
%>
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.