09. november 2000 - 09:22Der er
10 kommentarer og 2 løsninger
Flere dim. Array(x,y) - kan ikke udskrive
Jeg har et array som følgende, hvor jeg indsætter nogle oplysninger på baggrund af nogle filer som ligger i en mappe. ---------------------------------------- Dim fileArray() ReDim fileArray(4096, 3)
Set objFSO = CreateObject(\"Scripting.FileSystemObject\") Set objFolder = objFSO.GetFolder(Path) Set objFilesCollection = objFolder.Files
\' Indsætter filer i array i = 0 For Each objFile in objFilesCollection fileArray(i, 0) = objFile.Name fileArray(i, 1) = objFile.Type fileArray(i, 2) = objFile.Size i = i + 1 Next
ReDim fileArray(i-1, 3)
\' Her skal den udskrive arrayet For i = 0 To UBound(fileArray) Response.Write fileArray(i, 1) & \"<br>\" Next --------------------------------------- Hvorfor vil den ikke udskrive indholdet af mig array(se sidst i koden)?????
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Det gør den - den udskriger \"10\" - hvilket svaret til det antal filer som ligger i mappen/array\'et
Når jeg udskriver den, så kører den på rigtigvis løkken igennem, men den udskriver bare kun \"<br>\" og ikke selve værdien i arrayet.
Hvis jeg der i mod udskriver arrayet inde i den løkke hvor arrayet bliver genereret, så virker det fint. Altså: ------------------------------------
For Each objFile in objFilesCollection fileArray(i, 0) = objFile.Name fileArray(i, 1) = objFile.Type fileArray(i, 2) = objFile.Size Response.Write fileArray(i,2) & \"<br>\" i = i + 1 Next
------------------------------------ Så derfor kan jeg ikke rigtig forstå at jeg ikke kan udskrive værdierne længere nede i koden.
Set objFSO = CreateObject(\"Scripting.FileSystemObject\") Set objFolder = objFSO.GetFolder(Path) Set objFilesCollection = objFolder.Files
\' Indsætter filer i array i = 0 For Each objFile in objFilesCollection fileArray(0,i) = objFile.Name fileArray(1,i) = objFile.Type fileArray(2,i) = objFile.Size i = i + 1 Next
ReDim preserve fileArray(3,i-1)
\' Her skal den udskrive arrayet For i = 0 To UBound(fileArray) Response.Write fileArray(1,i) & \"<br>\" ext
Du kan ikke redime på første dimension, hvorfor ved jeg ikke. Men det her virker.
Dim fileArray() Dim total Dim Path Dim i Dim objFSO Dim objFolder dim objFilesCollection
ReDim fileArray(3, 4096)
Set objFSO = CreateObject(\"Scripting.FileSystemObject\") Set objFolder = objFSO.GetFolder(server.mappath(\"..\\\")) Set objFilesCollection = objFolder.Files
\' Indsætter filer i array i = 0 For Each objFile in objFilesCollection fileArray(0,i) = objFile.Name fileArray(1,i) = objFile.Type fileArray(2,i) = objFile.Size \' Response.Write fileArray(i, 1) & \"<br>\" i = i + 1 Next
Redim Preserve fileArray(3,i-1)
\' Her skal den udskrive arrayet For i = 1 To ubound(fileArray,2) Response.Write i & \" : \" fileArray(1,i) & \"<br>\" Next
Zogu: Ja det virker fint nu... Der er 60 point mere hvis du evt kan hjælp mig lidt med hvordan man sortere arrayet. Så at man med udgangspunkt i ovenstående kan sortere arrayet i Alfabetisk orden på objFile.name - og efter størrelse på objFile.size. Jeg har allerede lidt kode, men det virker ikke på det nye: --------------------------------------- \' Sorterer filer i array i = 0 For i = 0 to (UBound(fileArray)-1) min = i For j = (i + 1) to UBound(fileArray) If UCase(fileArray(0, i)) < UCase(fileArray(0, min)) Then min = j End if temp = fileArray(0, min) fileArray(0, min) = fileArray(0, i) fileArray(0, i) = temp Next Next --------------------------------------- jeg kan ikke lige gennemskue det.
Jeg har ikke testet om den kan køre. Men du skal huske at angive den dimension du ønsker Ubound skal returnere.
Jeg har også lige sat den til at flytte de sidste 2 felter, ellers er det kun fil navnene du bytter rundt på. :o)
Her kommer det : ----------------------------------- \' Sorterer filer i array i = 0 For i = 0 to (UBound(fileArray,2)-1) min = i For j = (i + 1) to UBound(fileArray,2) If UCase(fileArray(0, i)) < UCase(fileArray(0, min)) Then min = j End if temp0 = fileArray(0, min) temp1 = fileArray(1, min) temp2 = fileArray(2, min) fileArray(0, min) = fileArray(0, i) fileArray(1, min) = fileArray(1, i) fileArray(2, min) = fileArray(2, i) fileArray(0, i) = temp0 fileArray(1, i) = temp1 fileArray(2, i) = temp2 Next Next ---------------------------------------- Med venlig hilsen Zogu
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.